Monday, November 08, 2010 at 12:04 AM.


on rpcMessageEnclosure (client, port, msgnum) {
	<<9/6/99; 4:01:16 PM by DW
		<<First try sending the object to userland.receiveObject, if that fails, try sending to editorial.receiveEnclosure.
		<<For more information see$1277.
			<<04/12/00; 1:37:43 PM by JES
				<<localized using mainResponder.getString
			<<05/01/00; 7:26:52 PM by JES
				<<Changed getString calls to use a replacement table address instead of a lists
	local (pta = html.getpagetableaddress ());
	local (htmltext = "", indentlevel = 0);
	on add (s) {
		htmltext = htmltext + string.filledString ("\t", indentlevel) + s + "\r"};
	local (adrmsg = mainresponder.discuss.getmessagetable (msgnum));
	local (adr = adrmsg^.enclosureAddress);
	local (type = string.delete (adrmsg^.enclosuretype, 1, sizeof ("application/x-frontier-")));
	local (bits); pack (adrmsg^.enclosurebits, @bits); local (encodedBits = base64.encode (bits, infinity));
	local (params = {adr, type, encodedBits});
	try {
		local (errorstring);
		on tryOne (procedurename) {
			try {
				local (flinstalled = betty.rpc.client (client, port, procedurename, @params));
				pta^.title = mainResponder.getString ("discuss.sendRpcEnclosureWorkedTitle");
				add (mainResponder.getString ("discuss.sendRpcEnclosureWorkedBody"));
				return (true)}
			else {
				errorstring = tryError;
				return (false)}};
		if not tryOne ("userland.receiveObject") {
			if not tryOne ("editorial.receiveEnclosure") {
				pta^.title = mainResponder.getString ("discuss.sendRpcEnclosureDidntWorkTitle");
				bundle { // localized the body of the error page; 4/12/00; 1:50:59 PM by JES
					local (s); // we need to massage the text a little for HTML formatting, so put it in a local
					local (replacementTable); new (tableType, @replacementTable); // 05/01/00 JES: use replacement table instead of a list
					replacementTable.msgnum = msgnum;
					replacementTable.errorstring = errorstring;
					s = mainResponder.getString ("discuss.sendRpcEnclosureDidntWorkBody", {"msgnum", msgnum, "errorstring", errorstring}); // 4/13/00 JES: localized the error
					s = string.replaceAll (s, "\r", "\r" + string.filledString ("\t", indentlevel));
					add (s)}}}};
	return (htmltext)};

<<bundle //test code
	<<rpcMessageEnclosure (tcp.dns.getmydomainname (), 80, 868)

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.