Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.tcp.im.builtinDrivers.aim.code.core.recv_event
on recv_event(adrSelf) { <<I'm thinking here that I can just do a readStringFromStream and be all happy about it. local { header = ""; data=""}; while not header { try { tcp.readStreamBytes(adrself^._socket, 6, 60, @header)} else { <<msg("looping" + clock.ticks()) case true { tryerror contains "closed" { tcp.im.builtinDrivers.aim.code.core.ferror(adrSelf,tryerror); break}; tryError contains "timed out" { <<Nothing Special, we just didn't get data in timeout seconds 1}} else { tcp.im.builtinDrivers.aim.code.core.derror(adrSelf,tryerror)}; thread.sleepfor(1); }}; <<This will loop till there is something on the port. <<probably need to be nicer about it. if header == "" { tcp.im.builtinDrivers.aim.code.core.err_disconnect(adrSelf); return (false)}; local { marker = char(header[1]); mtype = number(char(header[2])); seq = number(number(char(header[3]))*256 + number(char(header[4]))); buflen = number(number(char(header[5]))*256 + number(char(header[6])))}; <<(marker,mtype,seq,buflen) = struct.unpack("!sBhh",header) <<#get the info if not tcp.readStreamBytes(adrself^._socket, buflen, 3, @data) { tcp.im.builtinDrivers.aim.code.core.err_disconnect(adrSelf)}; return ({mtype, string(data)}); };
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.