Beispiel #1
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     self.schema_ver.stream_serialize(f)
     self.prev_schema.stream_serialize(f)
     VectorSerializer.stream_serialize(FieldType, self.field_types, f)
     VectorSerializer.stream_serialize(SealType, self.seal_types, f)
     VectorSerializer.stream_serialize(ProofType, self.proof_types, f)
Beispiel #2
0
 def msg_ser(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<Q", self.nServices))
     f.write(struct.pack(b"<q", self.nTime))
     self.addrTo.stream_serialize(f, True)
     self.addrFrom.stream_serialize(f, True)
     f.write(struct.pack(b"<Q", self.nNonce))
     VarStringSerializer.stream_serialize(self.strSubVer, f)
     f.write(struct.pack(b"<i", self.nStartingHeight))
     f.write(struct.pack('?', self.relay))
Beispiel #3
0
 def msg_ser(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<Q", self.nServices))
     f.write(struct.pack(b"<q", self.nTime))
     self.addrTo.stream_serialize(f, True)
     self.addrFrom.stream_serialize(f, True)
     f.write(struct.pack(b"<Q", self.nNonce))
     VarStringSerializer.stream_serialize(self.strSubVer, f)
     f.write(struct.pack(b"<i", self.nStartingHeight))
     f.write(struct.pack('?', self.relay))
 def stream_serialize(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<q", self.nRelayUntil))
     f.write(struct.pack(b"<q", self.nExpiration))
     f.write(struct.pack(b"<i", self.nID))
     f.write(struct.pack(b"<i", self.nCancel))
     f.write(intVectorSerializer.serialize(self.setCancel))
     f.write(struct.pack(b"<i", self.nMinVer))
     f.write(struct.pack(b"<i", self.nMaxVer))
     f.write(intVectorSerializer.serialize(self.setSubVer))
     f.write(struct.pack(b"<i", self.nPriority))
     f.write(VarStringSerializer.serialize(self.strComment))
     f.write(VarStringSerializer.serialize(self.strStatusBar))
     f.write(VarStringSerializer.serialize(self.strReserved))
Beispiel #5
0
 def stream_serialize(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<q", self.nRelayUntil))
     f.write(struct.pack(b"<q", self.nExpiration))
     f.write(struct.pack(b"<i", self.nID))
     f.write(struct.pack(b"<i", self.nCancel))
     f.write(intVectorSerializer.serialize(self.setCancel))
     f.write(struct.pack(b"<i", self.nMinVer))
     f.write(struct.pack(b"<i", self.nMaxVer))
     f.write(intVectorSerializer.serialize(self.setSubVer))
     f.write(struct.pack(b"<i", self.nPriority))
     f.write(VarStringSerializer.serialize(self.strComment))
     f.write(VarStringSerializer.serialize(self.strStatusBar))
     f.write(VarStringSerializer.serialize(self.strReserved))
Beispiel #6
0
 def stream_deserialize_value(self, f):
     lut = {
         FieldType.Type.u8: lambda: ser_read(f, 1),
         FieldType.Type.u16: lambda: struct.unpack(b'<H', ser_read(f, 2))[0],
         FieldType.Type.u32: lambda: struct.unpack(b'<I', ser_read(f, 4))[0],
         FieldType.Type.u64: lambda: struct.unpack(b'<Q', ser_read(f, 8))[0],
         FieldType.Type.i8: lambda: ser_read(f, 1),
         FieldType.Type.i16: lambda: struct.unpack(b'<h', ser_read(f, 2))[0],
         FieldType.Type.i32: lambda: struct.unpack(b'<i', ser_read(f, 4))[0],
         FieldType.Type.i64: lambda: struct.unpack(b'<q', ser_read(f, 8))[0],
         FieldType.Type.vi: lambda: VarIntSerializer.stream_deserialize(f),
         FieldType.Type.fvi: lambda: FlagVarIntSerializer.stream_deserialize(f),
         FieldType.Type.str: lambda: VarStringSerializer.stream_deserialize(f).decode('utf-8'),
         FieldType.Type.bytes: lambda: BytesSerializer.stream_deserialize(f),
         FieldType.Type.sha256: lambda: Hash256Id.stream_deserialize(f),
         FieldType.Type.sha256d: lambda: Hash256Id.stream_deserialize(f),
         FieldType.Type.ripmd160: lambda: Hash160Id.stream_deserialize(f),
         FieldType.Type.hash160: lambda: Hash160Id.stream_deserialize(f),
         FieldType.Type.pubkey: lambda: PubKey.stream_deserialize(f),
         FieldType.Type.ecdsa: lambda: None,
     }
     if self.type in lut.keys():
         return lut[self.type]()
     else:
         raise NotImplementedError()
 def stream_deserialize(cls, f):
     c = cls()
     c.nVersion = struct.unpack(b"<i", ser_read(f,4))[0]
     c.nRelayUntil = struct.unpack(b"<q", ser_read(f,8))[0]
     c.nExpiration = struct.unpack(b"<q", ser_read(f,8))[0]
     c.nID = struct.unpack(b"<i", ser_read(f,4))[0]
     c.nCancel = struct.unpack(b"<i", ser_read(f,4))[0]
     c.setCancel = intVectorSerializer.deserialize(f)
     c.nMinVer = struct.unpack(b"<i", ser_read(f,4))[0]
     c.nMaxVer = struct.unpack(b"<i", ser_read(f,4))[0]
     c.setSubVer = intVectorSerializer.deserialize(f)
     c.nPriority = struct.unpack(b"<i", ser_read(f,4))[0]
     c.strComment = VarStringSerializer.deserialize(f)
     c.strStatusBar = VarStringSerializer.deserialize(f)
     c.strReserved = VarStringSerializer.deserialize(f)
     return c
Beispiel #8
0
 def stream_deserialize(cls, f):
     c = cls()
     c.nVersion = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.nRelayUntil = struct.unpack(b"<q", ser_read(f, 8))[0]
     c.nExpiration = struct.unpack(b"<q", ser_read(f, 8))[0]
     c.nID = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.nCancel = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.setCancel = intVectorSerialzer.deserialize(f)
     c.nMinVer = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.nMaxVer = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.setSubVer = VarStringSerializer.deserialize(f)
     c.nPriority = struct.unpack(b"<i", ser_read(f, 4))[0]
     c.strComment = VarStringSerializer.deserialize(f)
     c.strStatusBar = VarStringSerializer.deserialize(f)
     c.strReserved = VarStringSerializer.deserialize(f)
     return c
Beispiel #9
0
    def stream_serialize_value(self, value, f):
        if value is None:
            if self.type is FieldType.Type.str or self.type is FieldType.Type.bytes:
                f.write(bytes([0x00]))
            elif self.type is FieldType.Type.fvi:
                f.write(bytes([0xFF]))
            elif self.type in [FieldType.Type.sha256, FieldType.Type.sha256d]:
                f.write(bytes([0]*32))
            elif self.type in [FieldType.Type.ripmd160, FieldType.Type.hash160]:
                f.write(bytes([0]*20))
            elif self.type is FieldType.Type.pubkey:
                f.write(bytes([0x00]))
            elif self.type is FieldType.Type.ecdsa:
                f.write(bytes([0x00]))
            return

        lut = {
            FieldType.Type.u8: lambda x: f.write(bytes([x])),
            FieldType.Type.u16: lambda x: f.write(struct.pack(b'<H', x)),
            FieldType.Type.u32: lambda x: f.write(struct.pack(b'<I', x)),
            FieldType.Type.u64: lambda x: f.write(struct.pack(b'<Q', x)),
            FieldType.Type.i8: lambda x: f.write(bytes([x])),
            FieldType.Type.i16: lambda x: f.write(struct.pack(b'<h', x)),
            FieldType.Type.i32: lambda x: f.write(struct.pack(b'<i', x)),
            FieldType.Type.i64: lambda x: f.write(struct.pack(b'<q', x)),
            FieldType.Type.vi: lambda x: VarIntSerializer.stream_serialize(x, f),
            FieldType.Type.fvi: lambda x: FlagVarIntSerializer.stream_serialize((x, False), f),
            FieldType.Type.str: lambda x: VarStringSerializer.stream_serialize(x.encode('utf-8'), f),
            FieldType.Type.bytes: lambda x: BytesSerializer.stream_serialize(x, f),
            FieldType.Type.sha256: lambda x: x.stream_serealize(f),
            FieldType.Type.sha256d: lambda x: x.stream_serealize(f),
            FieldType.Type.ripmd160: lambda x: x.stream_serealize(f),
            FieldType.Type.hash160: lambda x: x.stream_serealize(f),
            FieldType.Type.pubkey: lambda x: x.stream_serealize(f),
            FieldType.Type.ecdsa: lambda _: None,
        }
        if self.type in lut.keys():
            if self.type in [FieldType.Type.sha256, FieldType.Type.sha256d,
                             FieldType.Type.ripmd160, FieldType.Type.hash160] and not issubclass(value, HashId):
                raise ValueError('in order to serialize hash value you need to provide an instance of HashId class')
            lut[self.type](value)
        else:
            raise NotImplementedError('ECDSA serialization is not implemented')
Beispiel #10
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.vchMsg, f)
     VarStringSerializer.stream_serialize(self.vchSig, f)
Beispiel #11
0
 def stream_deserialize(cls, f):
     c = cls()
     c.vchMsg = VarStringSerializer.stream_deserialize(f)
     c.vchSig = VarStringSerializer.stream_deserialize(f)
     return c
Beispiel #12
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     VectorSerializer.stream_serialize(TypeRef, self.fields, f)
     VectorSerializer.stream_serialize(
         TypeRef, [] if self.unseals is None else self.unseals, f)
     VectorSerializer.stream_serialize(TypeRef, self.seals, f)
Beispiel #13
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.vchMsg, f)
     VarStringSerializer.stream_serialize(self.vchSig, f)
Beispiel #14
0
 def stream_deserialize(cls, f):
     c = cls()
     c.vchMsg = VarStringSerializer.stream_deserialize(f)
     c.vchSig = VarStringSerializer.stream_deserialize(f)
     return c
Beispiel #15
0
 def stream_deserialize(cls, f):
     nonce = ser_read(f, HASH_LENGTH)
     strPaymentInfo = VarStringSerializer.stream_deserialize(f)
     host = VarStringSerializer.stream_deserialize(f)
     port = struct.unpack(b">H", ser_read(f, 2))[0]
     return cls(nonce, strPaymentInfo, host, port)
Beispiel #16
0
 def stream_serialize(self, f, **kwargs):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     f.write(bytes([self.type]))
Beispiel #17
0
 def stream_deserialize(cls, f, **kwargs):
     name = VarStringSerializer.stream_deserialize(f)
     type_val = ser_read(f, 1)
     return FieldType(name, FieldType.Type(type_val))
Beispiel #18
0
 def stream_serialize(self, f):
     assert len(self.nonce) == HASH_LENGTH
     f.write(self.nonce)
     VarStringSerializer.stream_serialize(self.strPaymentInfo, f)
     VarStringSerializer.stream_serialize(self.host, f)
     f.write(struct.pack(b">H", self.port))
Beispiel #19
0
 def stream_deserialize(cls, f):
     name = VarStringSerializer.deserialize(f)