Issues (227)

dynamicserialize/SelfDescribingBinaryProtocol.py (2 issues)

1
#
2
# Partially compatible AWIPS-II Thrift Binary Protocol
3
#
4
#
5
#     SOFTWARE HISTORY
6
#
7
#    Date            Ticket#       Engineer       Description
8
#    ------------    ----------    -----------    --------------------------
9
#    11/11/09                      chammack        Initial Creation.
10
#    06/09/10                      njensen            Added float, list methods
11
#    Apr 24, 2015    4425          nabowle         Add F64List support.
12
#
13
#
14
15
import struct
16
import numpy
17
from thrift.protocol.TProtocol import *
18
from thrift.protocol.TBinaryProtocol import *
19
20
FLOAT = 64
21
22
intList = numpy.dtype(numpy.int32).newbyteorder('>')
23
floatList = numpy.dtype(numpy.float32).newbyteorder('>')
24
longList = numpy.dtype(numpy.int64).newbyteorder('>')
25
shortList = numpy.dtype(numpy.int16).newbyteorder('>')
26
byteList = numpy.dtype(numpy.int8).newbyteorder('>')
27
doubleList = numpy.dtype(numpy.float64).newbyteorder('>')
28
29
30 View Code Duplication
class SelfDescribingBinaryProtocol(TBinaryProtocol):
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable TBinaryProtocol does not seem to be defined.
Loading history...
31
32
    def readFieldBegin(self):
33
        ftype = self.readByte()
34
        if ftype == TType.STOP:
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable TType does not seem to be defined.
Loading history...
35
            return None, ftype, 0
36
        name = self.readString()
37
        fid = self.readI16()
38
        return name, ftype, fid
39
40
    def readStructBegin(self):
41
        return self.readString()
42
43
    def writeStructBegin(self, name):
44
        self.writeString(name)
45
46
    def writeFieldBegin(self, name, ftype, fid):
47
        self.writeByte(ftype)
48
        self.writeString(name)
49
        self.writeI16(fid)
50
51
    def readFloat(self):
52
        d = self.readI32()
53
        dAsBytes = struct.pack('i', d)
54
        f = struct.unpack('f', dAsBytes)
55
        return f[0]
56
57
    def writeFloat(self, f):
58
        dAsBytes = struct.pack('f', f)
59
        i = struct.unpack('i', dAsBytes)
60
        self.writeI32(i[0])
61
62
    def readI32List(self, sz):
63
        buff = self.trans.readAll(4*sz)
64
        val = numpy.frombuffer(buff, dtype=intList, count=sz)
65
        return val
66
67
    def readF32List(self, sz):
68
        buff = self.trans.readAll(4*sz)
69
        val = numpy.frombuffer(buff, dtype=floatList, count=sz)
70
        return val
71
72
    def readF64List(self, sz):
73
        buff = self.trans.readAll(8*sz)
74
        val = numpy.frombuffer(buff, dtype=doubleList, count=sz)
75
        return val
76
77
    def readI64List(self, sz):
78
        buff = self.trans.readAll(8*sz)
79
        val = numpy.frombuffer(buff, dtype=longList, count=sz)
80
        return val
81
82
    def readI16List(self, sz):
83
        buff = self.trans.readAll(2*sz)
84
        val = numpy.frombuffer(buff, dtype=shortList, count=sz)
85
        return val
86
87
    def readI8List(self, sz):
88
        buff = self.trans.readAll(sz)
89
        val = numpy.frombuffer(buff, dtype=byteList, count=sz)
90
        return val
91
92
    def writeI32List(self, buff):
93
        b = numpy.asarray(buff, intList)
94
        self.trans.write(numpy.getbuffer(b))
95
96
    def writeF32List(self, buff):
97
        b = numpy.asarray(buff, floatList)
98
        self.trans.write(numpy.getbuffer(b))
99
100
    def writeF64List(self, buff):
101
        b = numpy.asarray(buff, doubleList)
102
        self.trans.write(numpy.getbuffer(b))
103
104
    def writeI64List(self, buff):
105
        b = numpy.asarray(buff, longList)
106
        self.trans.write(numpy.getbuffer(b))
107
108
    def writeI16List(self, buff):
109
        b = numpy.asarray(buff, shortList)
110
        self.trans.write(numpy.getbuffer(b))
111
112
    def writeI8List(self, buff):
113
        b = numpy.asarray(buff, byteList)
114
        self.trans.write(numpy.getbuffer(b))
115