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
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