Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/messages.py
Property | Old Value | New Value |
---|---|---|
File Mode | 100644 | 100755 |
Show First 20 Lines • Show All 209 Lines • ▼ Show 20 Lines | |||||
def ToHex(obj): | def ToHex(obj): | ||||
return bytes_to_hex_str(obj.serialize()) | return bytes_to_hex_str(obj.serialize()) | ||||
# Objects that map to bitcoind objects, which can be serialized/deserialized | # Objects that map to bitcoind objects, which can be serialized/deserialized | ||||
class CAddress(): | class CAddress(): | ||||
def __init__(self): | def __init__(self): | ||||
self.time = 0 | |||||
self.nServices = 1 | self.nServices = 1 | ||||
self.pchReserved = b"\x00" * 10 + b"\xff" * 2 | self.pchReserved = b"\x00" * 10 + b"\xff" * 2 | ||||
self.ip = "0.0.0.0" | self.ip = "0.0.0.0" | ||||
self.port = 0 | self.port = 0 | ||||
def deserialize(self, f): | def deserialize(self, f, with_time=True): | ||||
if with_time: | |||||
self.time = struct.unpack("<i", f.read(4))[0] | |||||
self.nServices = struct.unpack("<Q", f.read(8))[0] | self.nServices = struct.unpack("<Q", f.read(8))[0] | ||||
self.pchReserved = f.read(12) | self.pchReserved = f.read(12) | ||||
self.ip = socket.inet_ntoa(f.read(4)) | self.ip = socket.inet_ntoa(f.read(4)) | ||||
self.port = struct.unpack(">H", f.read(2))[0] | self.port = struct.unpack(">H", f.read(2))[0] | ||||
def serialize(self): | def serialize(self, with_time=True): | ||||
r = b"" | r = b"" | ||||
if with_time: | |||||
r += struct.pack("<i", self.time) | |||||
r += struct.pack("<Q", self.nServices) | r += struct.pack("<Q", self.nServices) | ||||
r += self.pchReserved | r += self.pchReserved | ||||
r += socket.inet_aton(self.ip) | r += socket.inet_aton(self.ip) | ||||
r += struct.pack(">H", self.port) | r += struct.pack(">H", self.port) | ||||
return r | return r | ||||
def __repr__(self): | def __repr__(self): | ||||
return "CAddress(nServices=%i ip=%s port=%i)" % (self.nServices, | return "CAddress(nServices=%i ip=%s port=%i)" % (self.nServices, | ||||
▲ Show 20 Lines • Show All 511 Lines • ▼ Show 20 Lines | class msg_version(): | ||||
def deserialize(self, f): | def deserialize(self, f): | ||||
self.nVersion = struct.unpack("<i", f.read(4))[0] | self.nVersion = struct.unpack("<i", f.read(4))[0] | ||||
if self.nVersion == 10300: | if self.nVersion == 10300: | ||||
self.nVersion = 300 | self.nVersion = 300 | ||||
self.nServices = struct.unpack("<Q", f.read(8))[0] | self.nServices = struct.unpack("<Q", f.read(8))[0] | ||||
self.nTime = struct.unpack("<q", f.read(8))[0] | self.nTime = struct.unpack("<q", f.read(8))[0] | ||||
self.addrTo = CAddress() | self.addrTo = CAddress() | ||||
self.addrTo.deserialize(f) | self.addrTo.deserialize(f, False) | ||||
if self.nVersion >= 106: | if self.nVersion >= 106: | ||||
self.addrFrom = CAddress() | self.addrFrom = CAddress() | ||||
self.addrFrom.deserialize(f) | self.addrFrom.deserialize(f, False) | ||||
self.nNonce = struct.unpack("<Q", f.read(8))[0] | self.nNonce = struct.unpack("<Q", f.read(8))[0] | ||||
self.strSubVer = deser_string(f) | self.strSubVer = deser_string(f) | ||||
else: | else: | ||||
self.addrFrom = None | self.addrFrom = None | ||||
self.nNonce = None | self.nNonce = None | ||||
self.strSubVer = None | self.strSubVer = None | ||||
self.nStartingHeight = None | self.nStartingHeight = None | ||||
Show All 11 Lines | def deserialize(self, f): | ||||
else: | else: | ||||
self.nRelay = 0 | self.nRelay = 0 | ||||
def serialize(self): | def serialize(self): | ||||
r = b"" | r = b"" | ||||
r += struct.pack("<i", self.nVersion) | r += struct.pack("<i", self.nVersion) | ||||
r += struct.pack("<Q", self.nServices) | r += struct.pack("<Q", self.nServices) | ||||
r += struct.pack("<q", self.nTime) | r += struct.pack("<q", self.nTime) | ||||
r += self.addrTo.serialize() | r += self.addrTo.serialize(False) | ||||
r += self.addrFrom.serialize() | r += self.addrFrom.serialize(False) | ||||
r += struct.pack("<Q", self.nNonce) | r += struct.pack("<Q", self.nNonce) | ||||
r += ser_string(self.strSubVer) | r += ser_string(self.strSubVer) | ||||
r += struct.pack("<i", self.nStartingHeight) | r += struct.pack("<i", self.nStartingHeight) | ||||
r += struct.pack("<b", self.nRelay) | r += struct.pack("<b", self.nRelay) | ||||
return r | return r | ||||
def __repr__(self): | def __repr__(self): | ||||
return 'msg_version(nVersion=%i nServices=%i nTime=%s addrTo=%s addrFrom=%s nNonce=0x%016X strSubVer=%s nStartingHeight=%i nRelay=%i)' \ | return 'msg_version(nVersion=%i nServices=%i nTime=%s addrTo=%s addrFrom=%s nNonce=0x%016X strSubVer=%s nStartingHeight=%i nRelay=%i)' \ | ||||
▲ Show 20 Lines • Show All 403 Lines • Show Last 20 Lines |