def loadPersistedData(self): self.lock.acquire() success = False if self.shouldPersist: bitfield = self.btPersister.get("PersistentStatus-bitfield", None) if bitfield is not None: success = True self._addBitfield(binaryToBin(bitfield)) self.lock.release() return success
def decodeMessage(message): length = binaryToLongInt(message[:4]) if length==0: #keepalive result = (-1, None) else: numericMessageTyp = binaryToShortInt(message[4]) if numericMessageTyp<0 or numericMessageTyp>8: #unknown messagetype result = (-2, None) elif numericMessageTyp>=0 and numericMessageTyp<=3 and length==1: #choke, unchoke, interested, notinterested result = (numericMessageTyp, None) elif numericMessageTyp==4 and length==5: #have result = (numericMessageTyp, binaryToLongInt(message[5:9])) elif numericMessageTyp==5: #bitfield result = (numericMessageTyp, binaryToBin(message[5:])) elif numericMessageTyp==6 and length==13: #request result = (numericMessageTyp, (binaryToLongInt(message[5:9]),\ binaryToLongInt(message[9:13]),\ binaryToLongInt(message[13:17]))) elif numericMessageTyp==7: #piece result = (numericMessageTyp, (binaryToLongInt(message[5:9]),\ binaryToLongInt(message[9:13]),\ message[13:])) elif numericMessageTyp==8 and length==13: #cancel result = (numericMessageTyp, (binaryToLongInt(message[5:9]),\ binaryToLongInt(message[9:13]),\ binaryToLongInt(message[13:17]))) else: #corrupt message result = (None, None) return result