示例#1
0
    def start(self, net=None, servers=None):
        '''Start the p2p node as ordinary node. Create a network object if none.'''
        if self.net is None:
            self.net = net or Network(
                Ks=crypto.generateRSA()[0], cert=None, port=self.port)
            self.net.start()

            # convert from serevrs ip:port list to Node list
            if servers:
                servers = [
                    Node(ip=ip,
                         port=port,
                         type=socket.SOCK_DGRAM,
                         guid=H(ip + ':' + str(port))) for ip, port in servers
                ]
                if _debug: print 'using servers=', servers

            self.client = Client(self.net, server=self.server).start(servers)
            if self.server:
                if self.router is None:
                    self.router = dht.Router(self.net).start()
                if self.storage is None:
                    self.storage = dht.Storage(self.net, self.router).start()
                if not self.router.initialized: self.router.initialized = True
        if not self._gens:
            for gen in [self.handler()]:
                multitask.add(gen)
                self._gens.append(gen)
        return self
示例#2
0
 def execute(s):
     if isinstance(s, p2p.ServerSocket):
         n = NetworkStub(Ks=crypto.generateRSA()[0], cert=None, model=model, view=control.view)
         s.start(net=n)
         node = model.addNode(s.net.node.guid, s)
         s.net.node.index = node.index # so that dht.Node has the index.
         active.append(s)
     else:
         if _debug: print s[0], s[1]
         result = yield s[0](**s[1])
         if not isinstance(result, list):
             print result
         else:
             if _debug: print result
             values = map(lambda x: x[0], result)
             print '\n'.join(values) if values else 'None'
示例#3
0
 def start(self, net=None, servers=None):
     '''Start the p2p node as ordinary node. Create a network object if none.'''
     if self.net is None:
         self.net = net or Network(Ks=crypto.generateRSA()[0], cert=None, port=self.port) 
         self.net.start()
         
         # convert from serevrs ip:port list to Node list
         if servers:
             servers=[Node(ip=ip, port=port, type=socket.SOCK_DGRAM, guid=H(ip + ':' + str(port))) for ip, port in servers]
             if _debug: print 'using servers=', servers
         
         self.client = Client(self.net, server=self.server).start(servers)
         if self.server:
             if self.router is None: self.router = dht.Router(self.net).start()
             if self.storage is None: self.storage = dht.Storage(self.net, self.router).start()
             if not self.router.initialized: self.router.initialized = True
     if not self._gens:
         for gen in [self.handler()]: multitask.add(gen); self._gens.append(gen)
     return self