示例#1
0
文件: epmd.py 项目: cybergrind/twotp
 def resp_port2(self, data):
     """
     Manage C{PORT2_RESP}.
     """
     dataLength = len(data)
     if dataLength < 2:
         return data
     else:
         result = theParser.parseChar(data[1])
         if result != 0:
             d, self.deferred = self.deferred, None
             d.errback(NodeNotFound(result))
             return data[2:]
         if dataLength < 12:
             return data
         portNum = theParser.parseShort(data[2:4])
         nodeType = theParser.parseChar(data[4])
         protocol = theParser.parseChar(data[5])
         distrVSNLo = theParser.parseShort(data[6:8])
         distrVSNHi = theParser.parseShort(data[8:10])
         distrVSNRng = (distrVSNLo, distrVSNHi)
         nLen = theParser.parseShort(data[10:12])
         nodeName = data[12:12 + nLen]
         if (dataLength == 12 + nLen + 1 and
             theParser.parseChar(data[-1]) == 0):
             extra = ""
             data = ""
         else:
             eLen = theParser.parseShort(data[12 + nLen:12 + nLen + 2])
             extra = data[12 + nLen + 2:12 + nLen + 2 + eLen]
             data = data[12 + nLen + 2 + eLen:]
         node = Node(
             portNum, nodeType, protocol, distrVSNRng, nodeName, extra)
         d, self.deferred = self.deferred, None
         d.callback(node)
         return data
示例#2
0
文件: epmd.py 项目: cybergrind/twotp
 def resp_alive2(self, data):
     """
     Manage C{ALIVE2_RESP}.
     """
     if len(data) < 4:
         return data
     result = theParser.parseChar(data[1])
     creation = theParser.parseShort(data[2:4])
     d = self.factory._connectDeferred
     if result == 0:
         # OK
         d.callback(creation)
     else:
         d.errback(ValueError(result))
     return data[4:]