Exemplo n.º 1
0
 class Thing(dictobj.PacketSpec):
     fields = [
         ("one", T.Uint8.enum(E).multiple(3).default(E.ZERO)),
         ("two", T.Int32.multiple(3).default(0)),
         ("three", T.String(32).multiple(3).default(lambda pkt: "")),
         ("four", T.Bytes(40).multiple(3, kls=Other)),
     ]
Exemplo n.º 2
0
 class Thing(dictobj.PacketSpec):
     fields = [
         ("one", T.Uint8.enum(E).multiple(4).default(E.ZERO)),
         ("two", T.Int32.multiple(3).default(0)),
         ("three", T.String(32).multiple(3)),
         ("four", T.Bytes(8).multiple(1, kls=Other)),
         ("five", T.Uint8.enum(E, allow_unknown=False).multiple(3).default(E.ZERO)),
     ]
Exemplo n.º 3
0
 class Group2(dictobj.PacketSpec):
     fields = [
         (
             "two",
             T.Int16.transform(
                 lambda _, v: (int(str(v).split(".")[0]) << 0x10)
                 + int(str(v).split(".")[1]),
                 lambda _, v: float("{0}.{1}".format(v >> 0x10, v & 0xFF)),
             ),
         ),
         ("mod", T.String.default(lambda p: "{0}.modified".format(p["two"]))),
         ("sb", T.Int8),
         ("bts", T.Bytes(lambda p: p["sb"])),
     ]
Exemplo n.º 4
0
 class Q(dictobj.PacketSpec):
     fields = [("things", T.Bytes(16).multiple(3, kls=lambda pkt: P))]
Exemplo n.º 5
0
 class Payload(dictobj.PacketSpec):
     message_type = 52
     represents_ack = True
     fields = [("one", T.Bytes(16))]
Exemplo n.º 6
0
 def spec(self):
     return T.Bytes(20)
Exemplo n.º 7
0
 class Other(dictobj.PacketSpec):
     fields = [
         ("one", T.BoolInt),
         ("five", T.Bytes(16).multiple(2).default(lambda pkt: b"")),
     ]
Exemplo n.º 8
0
 class Thing(dictobj.PacketSpec):
     fields = [
         ("one", T.BoolInt),
         ("two", T.Int32.multiple(2).default(0)),
         ("three", T.Bytes(4).multiple(2, kls=Other)),
     ]
Exemplo n.º 9
0
 class Chooser(dictobj.PacketSpec):
     fields = [
         ("choice", T.String(64)),
         ("amount", T.Uint8),
         ("val", T.Bytes(32).multiple(lambda pkt: pkt.amount, kls=choose_kls)),
     ]
Exemplo n.º 10
0
 class Thing(dictobj.PacketSpec):
     fields = [("thing", T.Bytes(72).multiple(3, kls=Other))]
Exemplo n.º 11
0
            thing.four[0] = {"one": "asdf"}

        self.assertProperties(thing, partial(test_thing, UnknownEnum(6)))

    it "can set as bytes":

        class E(enum.Enum):
            ZERO = 0
            MEH = 1
            BLAH = 2

        class Other(dictobj.PacketSpec):
            fields = [("other", T.BoolInt), ("another", T.String(64).default(""))]

        one_fields = [("one", T.Uint8.enum(E).multiple(3).default(E.ZERO))]
        two_fields = [("two", T.Bytes(72).multiple(3, kls=Other))]

        class One(dictobj.PacketSpec):
            fields = one_fields

        class Two(dictobj.PacketSpec):
            fields = two_fields

        class Thing(dictobj.PacketSpec):
            fields = [*one_fields, *two_fields]

        one = One(one=[1, "BLAH", repr(E.ZERO)])
        two = Two(
            two=[
                {"other": False, "another": "wat"},
                {"other": True},
Exemplo n.º 12
0
 class Group2(dictobj.PacketSpec):
     fields = [("three", T.Bytes(100).multiple(3, kls=three_typ)), ("four", four_typ)]
Exemplo n.º 13
0
 class Group1(dictobj.PacketSpec):
     fields = [("one", one_typ), ("two", T.Bytes(1).multiple(3, kls=two_typ))]