class TcpClient(TcpConnection): """don't use this class directly: derive from it and implemnt all needed foo_op -methods""" def __init__(self, server, fd, host, addr): #(fd, (host, addr)) = xxx_todo_changeme1 self.id = "%s:%s" % fd.getpeername() self.send_buffer = [] self.server = server self.fd = fd self.host = host self.addr = addr self.bridge = Bridge(NegotiationServer(id=server.name), functions=self) self.setup() self.bridge.setup( ) #fire negoation, etc.. (otherwise would be done when first operation is sent) def send_string(self, data): #CHEAT!: in future check size of message and don't send too much # and put rest to buffer self.log(">>>>>>>>>>send>>>>>>>>>>", data) if data and not self in self.server.clients2send: self.server.clients2send.append(self) while data: self.send_buffer.append(data[:1024]) data = data[1024:]
def __init__(self, server, fd, host, addr): #(fd, (host, addr)) = xxx_todo_changeme1 self.id = "%s:%s" % fd.getpeername() self.send_buffer = [] self.server = server self.fd = fd self.host = host self.addr = addr self.bridge = Bridge(NegotiationServer(id=server.name), functions=self) self.setup() self.bridge.setup( ) #fire negoation, etc.. (otherwise would be done when first operation is sent)
def __init__(self, name, mode="r", codec_id=None): self.name = name self.fp = open(name, mode) self.mode = mode self.objects = atlas.Messages() if mode=="r": self.bridge = Bridge(NegotiationClient(), functions=self) else: if codec_id: self.codec_id = codec_id else: self.codec_id = codecs.get_default_codec().id self.bridge = Bridge(NegotiationServer(codecs=(self.codec_id,)), functions=self) self.other_negotiation = NegotiationClient()
class TcpClient(TcpConnection): """don't use this class directly: derive from it and implemnt all needed foo_op -methods""" def __init__(self, server, (fd, (host, addr))): self.id = "%s:%s" % fd.getpeername() self.send_buffer = [] self.server = server self.fd = fd self.host = host self.addr = addr self.bridge = Bridge(NegotiationServer(id=server.name), functions=self) self.setup() self.bridge.setup( ) #fire negoation, etc.. (otherwise would be done when first operation is sent)
def __init__(self): Common.__init__(self) self.bridge = Bridge(NegotiationClient(), functions=self)
def __init__(self): Common.__init__(self) self.bridge = Bridge(NegotiationServer(), functions=self)
class File: """client for reading/writing files: currently only read support""" def __init__(self, name, mode="r", codec_id=None): self.name = name self.fp = open(name, mode) self.mode = mode self.objects = atlas.Messages() if mode == "r": self.bridge = Bridge(NegotiationClient(), functions=self) else: if codec_id: self.codec_id = codec_id else: self.codec_id = codecs.get_default_codec().id self.bridge = Bridge(NegotiationServer(codecs=(self.codec_id, )), functions=self) self.other_negotiation = NegotiationClient() def send_string(self, str): if self.mode == "w": self.fp.write(str) if self.other_negotiation.state: self.other_negotiation(str) self.bridge.process_string( self.other_negotiation.get_send_str()) def operation_received(self, op): self.objects.append(op) def read_object(self): while 1: if self.objects: return self.objects.pop(0) data = self.fp.read(buf_size) if not data: return self.bridge.process_string(data) def write_object(self, obj): self.bridge.process_operation(obj) def check_negotiation_ok(self): if not self.bridge.codec: raise IOError, "no codec negotiated in file %s" % self.name def read_all_as_list(self): objects = atlas.Messages() while 1: obj = self.read_object() if not obj: break objects.append(obj) self.check_negotiation_ok() return objects def read_all_as_dict(self): objects = {} while 1: obj = self.read_object() if not obj: break objects[obj.id] = obj self.check_negotiation_ok() return objects def read_and_analyse_all(self): objects = {} while 1: obj = self.read_object() if not obj: break objects[obj.id] = obj self.check_negotiation_ok() atlas.find_parents_children_objects(objects) return objects def close(self): self.bridge.close() self.fp.close()
class File: """client for reading/writing files: currently only read support""" def __init__(self, name, mode="r", codec_id=None): self.name = name self.fp = open(name, mode) self.mode = mode self.objects = atlas.Messages() if mode=="r": self.bridge = Bridge(NegotiationClient(), functions=self) else: if codec_id: self.codec_id = codec_id else: self.codec_id = codecs.get_default_codec().id self.bridge = Bridge(NegotiationServer(codecs=(self.codec_id,)), functions=self) self.other_negotiation = NegotiationClient() def send_string(self, str): if self.mode=="w": self.fp.write(str) if self.other_negotiation.state: self.other_negotiation(str) self.bridge.process_string(self.other_negotiation.get_send_str()) def operation_received(self, op): self.objects.append(op) def read_object(self): while 1: if self.objects: return self.objects.pop(0) data = self.fp.read(buf_size) if not data: return self.bridge.process_string(data) def write_object(self, obj): self.bridge.process_operation(obj) def check_negotiation_ok(self): if not self.bridge.codec: raise IOError, "no codec negotiated in file %s" % self.name def read_all_as_list(self): objects = atlas.Messages() while 1: obj = self.read_object() if not obj: break objects.append(obj) self.check_negotiation_ok() return objects def read_all_as_dict(self): objects = {} while 1: obj = self.read_object() if not obj: break objects[obj.id] = obj self.check_negotiation_ok() return objects def read_and_analyse_all(self): objects = {} while 1: obj = self.read_object() if not obj: break objects[obj.id] = obj self.check_negotiation_ok() atlas.find_parents_children_objects(objects) return objects def close(self): self.bridge.close() self.fp.close()