@@ -102,3 +102,57 @@ func (s *Serializer) Encode(msg types.WritableStruct) error {
102
102
}
103
103
return s .format .Flush ()
104
104
}
105
+
106
+ // A Deserializer is used to turn a byte stream into a Struct
107
+ type Deserializer struct {
108
+ format types.Format
109
+ }
110
+
111
+ // NewBinaryDeserializer creates a new deserializer using the binary format
112
+ func NewBinaryDeserializer (readWriter types.ReadWriteSizer ) * Deserializer {
113
+ return & Deserializer {format : NewBinaryFormat (readWriter )}
114
+ }
115
+
116
+ // NewCompactDeserializer creates a new deserializer using the compact format
117
+ func NewCompactDeserializer (readWriter types.ReadWriteSizer ) * Deserializer {
118
+ return & Deserializer {format : NewCompactFormat (readWriter )}
119
+ }
120
+
121
+ // NewCompactJSONDeserializer creates a new deserializer using the JSON format
122
+ func NewCompactJSONDeserializer (readWriter io.ReadWriter ) * Deserializer {
123
+ return & Deserializer {format : NewCompactJSONFormat (readWriter )}
124
+ }
125
+
126
+ // NewSimpleJSONDeserializer creates a new deserializer using the simple JSON format
127
+ func NewSimpleJSONDeserializer (readWriter io.ReadWriter ) * Deserializer {
128
+ return & Deserializer {format : NewSimpleJSONFormat (readWriter )}
129
+ }
130
+
131
+ // DecodeCompact deserializes a compact format message
132
+ func DecodeCompact (data []byte , msg types.ReadableStruct ) error {
133
+ reader := bytes .NewBuffer (data )
134
+ return NewCompactDeserializer (reader ).Decode (msg )
135
+ }
136
+
137
+ // DecodeBinary deserializes a binary format message
138
+ func DecodeBinary (data []byte , msg types.ReadableStruct ) error {
139
+ reader := bytes .NewBuffer (data )
140
+ return NewBinaryDeserializer (reader ).Decode (msg )
141
+ }
142
+
143
+ // DecodeCompactJSON deserializes a compact JSON format message
144
+ func DecodeCompactJSON (data []byte , msg types.ReadableStruct ) error {
145
+ reader := bytes .NewBuffer (data )
146
+ return NewCompactJSONDeserializer (reader ).Decode (msg )
147
+ }
148
+
149
+ // DecodeSimpleJSON deserializes a simple JSON format message
150
+ func DecodeSimpleJSON (data []byte , msg types.ReadableStruct ) error {
151
+ reader := bytes .NewBuffer (data )
152
+ return NewSimpleJSONDeserializer (reader ).Decode (msg )
153
+ }
154
+
155
+ // Decode deserializes a Thrift struct from the underlying format
156
+ func (d * Deserializer ) Decode (msg types.ReadableStruct ) error {
157
+ return msg .Read (d .format )
158
+ }
0 commit comments