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