Ejemplo n.º 1
0
Archivo: peer.py Proyecto: sixam/dw6824
    def __init__(self,ip='',port=9011,peer_id=-1,build_ui = True, log = None):
        # Node state
        if ip == '':
            self.ip = self._getIP()
        else:
            self.ip = ip
        if not log:
            log = Log('livesession')

        self.id         = peer_id
        self.port       = port
        self.log        = log
        self.name       = '{0}:{1}'.format(self.ip,port)
        self.state      = PeerState(peer_id, self.log)
        self.state.ip   = self.ip
        self.state.port = self.port
        self.state.ips.append(self.state.ip)
        self.state.ports.append(self.state.port)

        # Print start
        log.blue('\n\nINIT', self.id)
        log.blue('-'*(len(self.ip.__str__())+len(self.port.__str__())+3))
        self.log.blue(self.ip, ":", self.port)
        log.blue('-'*(len(self.ip.__str__())+len(self.port.__str__())+3))

        # Init main UI
        if build_ui:
            self.window = MainWindow(self.state)
            self.window.show()
            self.window.raise_()
            self.state.window = self.window
            self.state.newStrokesSignal.connect(self.window.scribbleArea.strokesSignalHandler)

        # Handler for the RPC requests
        self.RPCresponder = RPCresponder(self.state)

        # Accept incoming connections in a background thread
        self.server = SimpleXMLRPCServer((ip,port),logRequests=False,bind_and_activate=False)
        self.server.server_bind()
        self.server.server_activate()
        self.server.register_introspection_functions()
        self.server.register_instance(self.RPCresponder)
        t = Thread(target = self._run,name='{0}:{1}'.format(ip,port))
        t.daemon = True
        t.start()