def fromDict(dic):
     """dual of asKwargs"""
     if not compatible(P2pQuery._version, dic['version']):
         print "******* Query Version Mismatch ********"
         print "(we don't understand queries version %s)" % dic['version']
         raise QueryVersionMismatch(query_version=dic['version'],
                                    local_version=P2pQuery._version)
     _query = Query(' '.join(dic['words']),
                    filetype=dic['mime_type'],
                    qid=dic['qid'])
     p2pquery = P2pQuery(sender=dic['sender'],
                         client_host=dic['client_host'],
                         client_port=dic['client_port'],
                         ttl=dic['ttl'],
                         query=_query)
     return p2pquery
Exemple #2
0
 def xmlrpc_distributedQuery(self, queryDict):
     """On node has sent a query (P2pQuerier.sendQuery)
     """
     print "MaayRPCServer distributedQuery : %s " % queryDict
     query = P2pQuery(sender=queryDict['sender'],
                      port=queryDict['port'],
                      query=Query(queryDict['words'],
                                  filetype=queryDict['mime_type']),
                      ttl=queryDict['ttl'],
                      qid=queryDict['qid'],
                      host = self._lastClient.host)
     querier = self._sessions[ANONYMOUS_AVATARID]
     querier.registerNode(query.sender, query.host, query.port)
     # schedule the query for later processing and return immediately
     # this enables the sender to query several nodes in a row
     d = reactor.callLater(.01, self.getP2pQuerier().receiveQuery, query)
     return self.nodeId