class Filesender(object): def __init__(self, host, port, fp): self.fobj = open(fp, 'rb') self.c = PlainClientConnection((host, port)) self.c._on('writable', self.send_data) self.c._on('ready', self.ready) self.c._on('close', self.closed) def ready(self): print 'connection ready, pumping' self.send_data() def send_data(self): d = self.fobj.read(16384) if not d: print 'EOF, closing' self.fobj.close() self.c.close() unloop() return self.c.write(d) def closed(self, e): traceback.print_exc() print e self.fobj.close() unloop()
class Client(object): def __init__(self, host, port): connection = (host, port) self.c = PlainClientConnection(connection) self.c._on('ready', self.ready) self.c._on('close', self.closed) self.c._on('read', self.read) def ready(self): print 'ready' def read(self, d): print repr(d) def closed(self): unloop()