def cb(*args): print repr(args) myLock.signal() serv = AoSocketServ() serv.connect() try: conn = AoConnection() try: conn.open(serv, apid) s = AoSocket() try: s.set_socket_serv(serv) s.set_connection(conn) s.open_tcp() s.connect_tcp(u"pdis.hiit.fi", 80, cb, "connect") myLock.wait() s.write_data("GET / HTTP/1.0\n\n", cb, "write") myLock.wait() s.read_some(256, cb, "read") myLock.wait() finally: s.close() finally: conn.close() finally: serv.close() print "all done"
import e32 from pyaosocket import AoSocketServ, AoSocket myLock = e32.Ao_lock() def cb(*args): print repr(args) myLock.signal() serv = AoSocketServ() serv.connect() try: s = AoSocket() try: s.set_socket_serv(serv) s.open_tcp() s.connect_tcp(u"pdis.hiit.fi", 80, cb, "connect") myLock.wait() s.write_data("GET / HTTP/1.0\n\n", cb, "write") myLock.wait() s.read_some(256, cb, "read") myLock.wait() finally: s.close() finally: serv.close() print "all done"
class Uploader: def __init__(self, config): self.config = config self.host, self.port, self.path = dest_info self.serv = None self.conn = None self.sock = None self.apid = None def send(self, card_data, cb): if self.sock: raise "still sending" self.cb = cb self.data = card_data apid = self.config.get_apid() if not self.serv: self.serv = AoSocketServ() self.serv.connect() if (apid is None) or (apid != self.apid): if self.conn: self.conn.close() self.conn = None self.apid = apid if (self.apid is not None) and (not self.conn): try: self.conn = AoConnection() self.conn.open(self.serv, self.apid) except: self.conn = None ut.print_exception() self.sock = AoSocket() try: self.sock.set_socket_serv(self.serv) if self.conn: self.sock.set_connection(self.conn) self.sock.open_tcp() #print "making connect request" self.sock.connect_tcp(unicode(self.host), self.port, self._connected, None) #print "now connecting" except: self.sock.close() self.sock = None def _connected(self, *args): #print repr(["_connected", args]) err, udata = args if err: self.cancel() self.cb(err, None) else: self.sock.write_data(self.data, self._written, None) def _written(self, *args): #print repr(["_written", args]) err, udata = args if err: self.cancel() self.cb(err, None) else: self.reader = ReadExp(len(http_accepted), self.sock, self._read) self.reader.read() def _read(self, serr, data): #print repr(["_read", serr, data]) self.cancel() if not serr: if data == http_accepted: equ = "accepted" elif data == http_refused: equ = "refused" else: equ = "other" self.cb(serr, equ) def cancel(self): if self.sock: self.sock.close() self.sock = None def close(self): self.cancel() if self.conn: self.conn.close() if self.serv: self.serv.close() self.data = None # to save memory