Class: Thrift::BaseProtocol
- Inherits:
-
Object
- Object
- Thrift::BaseProtocol
show all
- Defined in:
- lib/thrift/protocol/base_protocol.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#initialize(trans) ⇒ BaseProtocol
constructor
A new instance of BaseProtocol.
-
#native? ⇒ Boolean
-
#read_binary ⇒ Object
Reads a Thrift Binary (Thrift String without encoding).
-
#read_bool ⇒ Object
-
#read_byte ⇒ Object
-
#read_double ⇒ Object
-
#read_field_begin ⇒ Object
-
#read_field_end ⇒ Object
-
#read_i16 ⇒ Object
-
#read_i32 ⇒ Object
-
#read_i64 ⇒ Object
-
#read_list_begin ⇒ Object
-
#read_list_end ⇒ Object
-
#read_map_begin ⇒ Object
-
#read_map_end ⇒ Object
-
#read_message_begin ⇒ Object
-
#read_message_end ⇒ Object
-
#read_set_begin ⇒ Object
-
#read_set_end ⇒ Object
-
#read_string ⇒ Object
-
#read_struct_begin ⇒ Object
-
#read_struct_end ⇒ Object
-
#read_type(field_info) ⇒ Object
Reads a field value based on the field information.
-
#skip(type) ⇒ Object
-
#to_s ⇒ Object
-
#write_binary(buf) ⇒ Object
Writes a Thrift Binary (Thrift String with no encoding).
-
#write_bool(bool) ⇒ Object
-
#write_byte(byte) ⇒ Object
-
#write_double(dub) ⇒ Object
-
#write_field(*args) ⇒ Object
Writes a field based on the field information, field ID and value.
-
#write_field_begin(name, type, id) ⇒ Object
-
#write_field_end ⇒ Object
-
#write_field_stop ⇒ Object
-
#write_i16(i16) ⇒ Object
-
#write_i32(i32) ⇒ Object
-
#write_i64(i64) ⇒ Object
-
#write_list_begin(etype, size) ⇒ Object
-
#write_list_end ⇒ Object
-
#write_map_begin(ktype, vtype, size) ⇒ Object
-
#write_map_end ⇒ Object
-
#write_message_begin(name, type, seqid) ⇒ Object
-
#write_message_end ⇒ Object
-
#write_set_begin(etype, size) ⇒ Object
-
#write_set_end ⇒ Object
-
#write_string(str) ⇒ Object
-
#write_struct_begin(name) ⇒ Object
-
#write_struct_end ⇒ Object
-
#write_type(field_info, value) ⇒ Object
Writes a field value based on the field information.
Constructor Details
Returns a new instance of BaseProtocol.
43
44
45
|
# File 'lib/thrift/protocol/base_protocol.rb', line 43
def initialize(trans)
@trans = trans
end
|
Instance Attribute Details
#trans ⇒ Object
Returns the value of attribute trans.
41
42
43
|
# File 'lib/thrift/protocol/base_protocol.rb', line 41
def trans
@trans
end
|
Instance Method Details
#native? ⇒ Boolean
47
48
49
50
|
# File 'lib/thrift/protocol/base_protocol.rb', line 47
def native?
puts 'wrong method is being called!'
false
end
|
#read_binary ⇒ Object
Reads a Thrift Binary (Thrift String without encoding). In Ruby 1.9+, all Strings will be returned
with an Encoding of BINARY.
Returns a String.
208
209
210
|
# File 'lib/thrift/protocol/base_protocol.rb', line 208
def read_binary
raise NotImplementedError
end
|
#read_bool ⇒ Object
173
174
175
|
# File 'lib/thrift/protocol/base_protocol.rb', line 173
def read_bool
raise NotImplementedError
end
|
#read_byte ⇒ Object
177
178
179
|
# File 'lib/thrift/protocol/base_protocol.rb', line 177
def read_byte
raise NotImplementedError
end
|
#read_double ⇒ Object
193
194
195
|
# File 'lib/thrift/protocol/base_protocol.rb', line 193
def read_double
raise NotImplementedError
end
|
#read_field_begin ⇒ Object
149
150
151
|
# File 'lib/thrift/protocol/base_protocol.rb', line 149
def read_field_begin
raise NotImplementedError
end
|
#read_field_end ⇒ Object
153
|
# File 'lib/thrift/protocol/base_protocol.rb', line 153
def read_field_end = nil
|
#read_i16 ⇒ Object
181
182
183
|
# File 'lib/thrift/protocol/base_protocol.rb', line 181
def read_i16
raise NotImplementedError
end
|
#read_i32 ⇒ Object
185
186
187
|
# File 'lib/thrift/protocol/base_protocol.rb', line 185
def read_i32
raise NotImplementedError
end
|
#read_i64 ⇒ Object
189
190
191
|
# File 'lib/thrift/protocol/base_protocol.rb', line 189
def read_i64
raise NotImplementedError
end
|
#read_list_begin ⇒ Object
161
162
163
|
# File 'lib/thrift/protocol/base_protocol.rb', line 161
def read_list_begin
raise NotImplementedError
end
|
#read_list_end ⇒ Object
165
|
# File 'lib/thrift/protocol/base_protocol.rb', line 165
def read_list_end = nil
|
#read_map_begin ⇒ Object
155
156
157
|
# File 'lib/thrift/protocol/base_protocol.rb', line 155
def read_map_begin
raise NotImplementedError
end
|
#read_map_end ⇒ Object
159
|
# File 'lib/thrift/protocol/base_protocol.rb', line 159
def read_map_end = nil
|
#read_message_begin ⇒ Object
137
138
139
|
# File 'lib/thrift/protocol/base_protocol.rb', line 137
def read_message_begin
raise NotImplementedError
end
|
#read_message_end ⇒ Object
141
|
# File 'lib/thrift/protocol/base_protocol.rb', line 141
def read_message_end = nil
|
#read_set_begin ⇒ Object
167
168
169
|
# File 'lib/thrift/protocol/base_protocol.rb', line 167
def read_set_begin
raise NotImplementedError
end
|
#read_set_end ⇒ Object
171
|
# File 'lib/thrift/protocol/base_protocol.rb', line 171
def read_set_end = nil
|
#read_string ⇒ Object
Reads a Thrift String. In Ruby 1.9+, all Strings will be returned with an Encoding of UTF-8.
Returns a String.
200
201
202
|
# File 'lib/thrift/protocol/base_protocol.rb', line 200
def read_string
raise NotImplementedError
end
|
#read_struct_begin ⇒ Object
143
144
145
|
# File 'lib/thrift/protocol/base_protocol.rb', line 143
def read_struct_begin
raise NotImplementedError
end
|
#read_struct_end ⇒ Object
147
|
# File 'lib/thrift/protocol/base_protocol.rb', line 147
def read_struct_end = nil
|
#read_type(field_info) ⇒ Object
Reads a field value based on the field information.
field_info - A Hash containing the pertinent data to write:
:type - The Thrift::Types constant that determines how the value is written.
:binary - A flag that indicates if Thrift::Types::STRING is a binary string (string without encoding).
Returns the value read; object type varies based on field_info.
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
# File 'lib/thrift/protocol/base_protocol.rb', line 288
def read_type(field_info)
field_info = { type: field_info } if field_info.is_a? Integer
case field_info[:type]
when Types::BOOL
read_bool
when Types::BYTE
read_byte
when Types::DOUBLE
read_double
when Types::I16
read_i16
when Types::I32
read_i32
when Types::I64
read_i64
when Types::STRING
if field_info[:binary]
read_binary
else
read_string
end
else
raise NotImplementedError
end
end
|
#skip(type) ⇒ Object
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
|
# File 'lib/thrift/protocol/base_protocol.rb', line 317
def skip(type)
case type
when Types::BOOL
read_bool
when Types::BYTE
read_byte
when Types::I16
read_i16
when Types::I32
read_i32
when Types::I64
read_i64
when Types::DOUBLE
read_double
when Types::STRING
read_string
when Types::STRUCT
read_struct_begin
while true
_, type, = read_field_begin
break if type == Types::STOP
skip(type)
read_field_end
end
read_struct_end
when Types::MAP
ktype, vtype, size = read_map_begin
size.times do
skip(ktype)
skip(vtype)
end
read_map_end
when Types::SET
etype, size = read_set_begin
size.times do
skip(etype)
end
read_set_end
when Types::LIST
etype, size = read_list_begin
size.times do
skip(etype)
end
read_list_end
else
raise ProtocolException.new(ProtocolException::INVALID_DATA, 'Invalid data')
end
end
|
#to_s ⇒ Object
367
368
369
|
# File 'lib/thrift/protocol/base_protocol.rb', line 367
def to_s
"#{trans}"
end
|
#write_binary(buf) ⇒ Object
Writes a Thrift Binary (Thrift String with no encoding). In Ruby 1.9+, the String passed
will forced into BINARY encoding.
buf - The String to write.
Returns nothing.
133
134
135
|
# File 'lib/thrift/protocol/base_protocol.rb', line 133
def write_binary(buf)
raise NotImplementedError
end
|
#write_bool(bool) ⇒ Object
92
93
94
|
# File 'lib/thrift/protocol/base_protocol.rb', line 92
def write_bool(bool)
raise NotImplementedError
end
|
#write_byte(byte) ⇒ Object
96
97
98
|
# File 'lib/thrift/protocol/base_protocol.rb', line 96
def write_byte(byte)
raise NotImplementedError
end
|
#write_double(dub) ⇒ Object
112
113
114
|
# File 'lib/thrift/protocol/base_protocol.rb', line 112
def write_double(dub)
raise NotImplementedError
end
|
#write_field(*args) ⇒ Object
Writes a field based on the field information, field ID and value.
field_info - A Hash containing the definition of the field:
:name - The name of the field.
:type - The type of the field, which must be a Thrift::Types constant.
:binary - A Boolean flag that indicates if Thrift::Types::STRING is a binary string (string without encoding).
fid - The ID of the field.
value - The field's value to write; object type varies based on :type.
Returns nothing.
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/thrift/protocol/base_protocol.rb', line 222
def write_field(*args)
if args.size == 3
field_info = args[0]
fid = args[1]
value = args[2]
elsif args.size == 4
field_info = { name: args[0], type: args[1] }
fid = args[2]
value = args[3]
else
raise ArgumentError, "wrong number of arguments (#{args.size} for 3)"
end
write_field_begin(field_info[:name], field_info[:type], fid)
write_type(field_info, value)
write_field_end
end
|
#write_field_begin(name, type, id) ⇒ Object
64
65
66
|
# File 'lib/thrift/protocol/base_protocol.rb', line 64
def write_field_begin(name, type, id)
raise NotImplementedError
end
|
#write_field_end ⇒ Object
68
|
# File 'lib/thrift/protocol/base_protocol.rb', line 68
def write_field_end = nil
|
#write_field_stop ⇒ Object
70
71
72
|
# File 'lib/thrift/protocol/base_protocol.rb', line 70
def write_field_stop
raise NotImplementedError
end
|
#write_i16(i16) ⇒ Object
100
101
102
|
# File 'lib/thrift/protocol/base_protocol.rb', line 100
def write_i16(i16)
raise NotImplementedError
end
|
#write_i32(i32) ⇒ Object
104
105
106
|
# File 'lib/thrift/protocol/base_protocol.rb', line 104
def write_i32(i32)
raise NotImplementedError
end
|
#write_i64(i64) ⇒ Object
108
109
110
|
# File 'lib/thrift/protocol/base_protocol.rb', line 108
def write_i64(i64)
raise NotImplementedError
end
|
#write_list_begin(etype, size) ⇒ Object
80
81
82
|
# File 'lib/thrift/protocol/base_protocol.rb', line 80
def write_list_begin(etype, size)
raise NotImplementedError
end
|
#write_list_end ⇒ Object
84
|
# File 'lib/thrift/protocol/base_protocol.rb', line 84
def write_list_end = nil
|
#write_map_begin(ktype, vtype, size) ⇒ Object
74
75
76
|
# File 'lib/thrift/protocol/base_protocol.rb', line 74
def write_map_begin(ktype, vtype, size)
raise NotImplementedError
end
|
#write_map_end ⇒ Object
78
|
# File 'lib/thrift/protocol/base_protocol.rb', line 78
def write_map_end = nil
|
#write_message_begin(name, type, seqid) ⇒ Object
52
53
54
|
# File 'lib/thrift/protocol/base_protocol.rb', line 52
def write_message_begin(name, type, seqid)
raise NotImplementedError
end
|
#write_message_end ⇒ Object
56
|
# File 'lib/thrift/protocol/base_protocol.rb', line 56
def write_message_end = nil
|
#write_set_begin(etype, size) ⇒ Object
86
87
88
|
# File 'lib/thrift/protocol/base_protocol.rb', line 86
def write_set_begin(etype, size)
raise NotImplementedError
end
|
#write_set_end ⇒ Object
90
|
# File 'lib/thrift/protocol/base_protocol.rb', line 90
def write_set_end = nil
|
#write_string(str) ⇒ Object
Writes a Thrift String. In Ruby 1.9+, the String passed will be transcoded to UTF-8.
str - The String to write.
Raises EncodingError if the transcoding to UTF-8 fails.
Returns nothing.
123
124
125
|
# File 'lib/thrift/protocol/base_protocol.rb', line 123
def write_string(str)
raise NotImplementedError
end
|
#write_struct_begin(name) ⇒ Object
58
59
60
|
# File 'lib/thrift/protocol/base_protocol.rb', line 58
def write_struct_begin(name)
raise NotImplementedError
end
|
#write_struct_end ⇒ Object
62
|
# File 'lib/thrift/protocol/base_protocol.rb', line 62
def write_struct_end = nil
|
#write_type(field_info, value) ⇒ Object
Writes a field value based on the field information.
field_info - A Hash containing the definition of the field:
:type - The Thrift::Types constant that determines how the value is written.
:binary - A Boolean flag that indicates if Thrift::Types::STRING is a binary string (string without encoding).
value - The field's value to write; object type varies based on field_info.
Returns nothing.
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
# File 'lib/thrift/protocol/base_protocol.rb', line 250
def write_type(field_info, value)
field_info = { type: field_info } if field_info.is_a? Integer
case field_info[:type]
when Types::BOOL
write_bool(value)
when Types::BYTE
write_byte(value)
when Types::DOUBLE
write_double(value)
when Types::I16
write_i16(value)
when Types::I32
write_i32(value)
when Types::I64
write_i64(value)
when Types::STRING
if field_info[:binary]
write_binary(value)
else
write_string(value)
end
when Types::STRUCT
value.write(self)
else
raise NotImplementedError
end
end
|