Exemplo n.º 1
0
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:]
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
 def __init__(self):
     Common.__init__(self)
     self.bridge = Bridge(NegotiationClient(), functions=self)
Exemplo n.º 7
0
 def __init__(self):
     Common.__init__(self)
     self.bridge = Bridge(NegotiationServer(), functions=self)
Exemplo n.º 8
0
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()
Exemplo n.º 9
0
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()