upfluence-thrift 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +43 -0
  3. data/benchmark/Benchmark.thrift +24 -0
  4. data/benchmark/benchmark.rb +271 -0
  5. data/benchmark/client.rb +74 -0
  6. data/benchmark/gen-rb/benchmark_constants.rb +11 -0
  7. data/benchmark/gen-rb/benchmark_service.rb +80 -0
  8. data/benchmark/gen-rb/benchmark_types.rb +10 -0
  9. data/benchmark/server.rb +82 -0
  10. data/benchmark/thin_server.rb +44 -0
  11. data/ext/binary_protocol_accelerated.c +460 -0
  12. data/ext/binary_protocol_accelerated.h +20 -0
  13. data/ext/bytes.c +36 -0
  14. data/ext/bytes.h +31 -0
  15. data/ext/compact_protocol.c +637 -0
  16. data/ext/compact_protocol.h +20 -0
  17. data/ext/constants.h +99 -0
  18. data/ext/extconf.rb +34 -0
  19. data/ext/macros.h +41 -0
  20. data/ext/memory_buffer.c +134 -0
  21. data/ext/memory_buffer.h +20 -0
  22. data/ext/protocol.c +0 -0
  23. data/ext/protocol.h +0 -0
  24. data/ext/strlcpy.c +41 -0
  25. data/ext/strlcpy.h +34 -0
  26. data/ext/struct.c +707 -0
  27. data/ext/struct.h +25 -0
  28. data/ext/thrift_native.c +201 -0
  29. data/lib/thrift.rb +68 -0
  30. data/lib/thrift/bytes.rb +131 -0
  31. data/lib/thrift/client.rb +71 -0
  32. data/lib/thrift/core_ext.rb +23 -0
  33. data/lib/thrift/core_ext/fixnum.rb +29 -0
  34. data/lib/thrift/exceptions.rb +87 -0
  35. data/lib/thrift/multiplexed_processor.rb +76 -0
  36. data/lib/thrift/processor.rb +57 -0
  37. data/lib/thrift/protocol/base_protocol.rb +379 -0
  38. data/lib/thrift/protocol/binary_protocol.rb +237 -0
  39. data/lib/thrift/protocol/binary_protocol_accelerated.rb +39 -0
  40. data/lib/thrift/protocol/compact_protocol.rb +435 -0
  41. data/lib/thrift/protocol/json_protocol.rb +769 -0
  42. data/lib/thrift/protocol/multiplexed_protocol.rb +40 -0
  43. data/lib/thrift/protocol/protocol_decorator.rb +194 -0
  44. data/lib/thrift/serializer/deserializer.rb +33 -0
  45. data/lib/thrift/serializer/serializer.rb +34 -0
  46. data/lib/thrift/server/base_server.rb +31 -0
  47. data/lib/thrift/server/mongrel_http_server.rb +60 -0
  48. data/lib/thrift/server/nonblocking_server.rb +305 -0
  49. data/lib/thrift/server/rack_application.rb +61 -0
  50. data/lib/thrift/server/simple_server.rb +43 -0
  51. data/lib/thrift/server/thin_http_server.rb +51 -0
  52. data/lib/thrift/server/thread_pool_server.rb +75 -0
  53. data/lib/thrift/server/threaded_server.rb +47 -0
  54. data/lib/thrift/struct.rb +237 -0
  55. data/lib/thrift/struct_union.rb +192 -0
  56. data/lib/thrift/thrift_native.rb +24 -0
  57. data/lib/thrift/transport/base_server_transport.rb +37 -0
  58. data/lib/thrift/transport/base_transport.rb +109 -0
  59. data/lib/thrift/transport/buffered_transport.rb +114 -0
  60. data/lib/thrift/transport/framed_transport.rb +117 -0
  61. data/lib/thrift/transport/http_client_transport.rb +56 -0
  62. data/lib/thrift/transport/io_stream_transport.rb +39 -0
  63. data/lib/thrift/transport/memory_buffer_transport.rb +125 -0
  64. data/lib/thrift/transport/server_socket.rb +63 -0
  65. data/lib/thrift/transport/socket.rb +139 -0
  66. data/lib/thrift/transport/unix_server_socket.rb +60 -0
  67. data/lib/thrift/transport/unix_socket.rb +40 -0
  68. data/lib/thrift/types.rb +101 -0
  69. data/lib/thrift/union.rb +179 -0
  70. data/spec/BaseService.thrift +27 -0
  71. data/spec/ExtendedService.thrift +25 -0
  72. data/spec/Referenced.thrift +44 -0
  73. data/spec/ThriftNamespacedSpec.thrift +53 -0
  74. data/spec/ThriftSpec.thrift +183 -0
  75. data/spec/base_protocol_spec.rb +217 -0
  76. data/spec/base_transport_spec.rb +350 -0
  77. data/spec/binary_protocol_accelerated_spec.rb +42 -0
  78. data/spec/binary_protocol_spec.rb +66 -0
  79. data/spec/binary_protocol_spec_shared.rb +455 -0
  80. data/spec/bytes_spec.rb +160 -0
  81. data/spec/client_spec.rb +99 -0
  82. data/spec/compact_protocol_spec.rb +143 -0
  83. data/spec/exception_spec.rb +141 -0
  84. data/spec/flat_spec.rb +62 -0
  85. data/spec/gen-rb/base/base_service.rb +80 -0
  86. data/spec/gen-rb/base/base_service_constants.rb +11 -0
  87. data/spec/gen-rb/base/base_service_types.rb +26 -0
  88. data/spec/gen-rb/extended/extended_service.rb +78 -0
  89. data/spec/gen-rb/extended/extended_service_constants.rb +11 -0
  90. data/spec/gen-rb/extended/extended_service_types.rb +12 -0
  91. data/spec/gen-rb/flat/namespaced_nonblocking_service.rb +272 -0
  92. data/spec/gen-rb/flat/referenced_constants.rb +11 -0
  93. data/spec/gen-rb/flat/referenced_types.rb +17 -0
  94. data/spec/gen-rb/flat/thrift_namespaced_spec_constants.rb +11 -0
  95. data/spec/gen-rb/flat/thrift_namespaced_spec_types.rb +28 -0
  96. data/spec/gen-rb/namespaced_spec_namespace/namespaced_nonblocking_service.rb +272 -0
  97. data/spec/gen-rb/namespaced_spec_namespace/thrift_namespaced_spec_constants.rb +11 -0
  98. data/spec/gen-rb/namespaced_spec_namespace/thrift_namespaced_spec_types.rb +28 -0
  99. data/spec/gen-rb/nonblocking_service.rb +272 -0
  100. data/spec/gen-rb/other_namespace/referenced_constants.rb +11 -0
  101. data/spec/gen-rb/other_namespace/referenced_types.rb +17 -0
  102. data/spec/gen-rb/thrift_spec_constants.rb +11 -0
  103. data/spec/gen-rb/thrift_spec_types.rb +538 -0
  104. data/spec/http_client_spec.rb +120 -0
  105. data/spec/json_protocol_spec.rb +513 -0
  106. data/spec/namespaced_spec.rb +67 -0
  107. data/spec/nonblocking_server_spec.rb +263 -0
  108. data/spec/processor_spec.rb +80 -0
  109. data/spec/serializer_spec.rb +67 -0
  110. data/spec/server_socket_spec.rb +79 -0
  111. data/spec/server_spec.rb +147 -0
  112. data/spec/socket_spec.rb +61 -0
  113. data/spec/socket_spec_shared.rb +104 -0
  114. data/spec/spec_helper.rb +64 -0
  115. data/spec/struct_nested_containers_spec.rb +191 -0
  116. data/spec/struct_spec.rb +293 -0
  117. data/spec/thin_http_server_spec.rb +141 -0
  118. data/spec/types_spec.rb +115 -0
  119. data/spec/union_spec.rb +203 -0
  120. data/spec/unix_socket_spec.rb +107 -0
  121. data/test/debug_proto/gen-rb/debug_proto_test_constants.rb +274 -0
  122. data/test/debug_proto/gen-rb/debug_proto_test_types.rb +761 -0
  123. data/test/debug_proto/gen-rb/empty_service.rb +24 -0
  124. data/test/debug_proto/gen-rb/inherited.rb +79 -0
  125. data/test/debug_proto/gen-rb/reverse_order_service.rb +82 -0
  126. data/test/debug_proto/gen-rb/service_for_exception_with_a_map.rb +81 -0
  127. data/test/debug_proto/gen-rb/srv.rb +330 -0
  128. metadata +388 -0
@@ -0,0 +1,107 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ require 'spec_helper'
21
+ require File.expand_path("#{File.dirname(__FILE__)}/socket_spec_shared")
22
+
23
+ describe 'UNIXSocket' do
24
+
25
+ describe Thrift::UNIXSocket do
26
+ before(:each) do
27
+ @path = '/tmp/thrift_spec_socket'
28
+ @socket = Thrift::UNIXSocket.new(@path)
29
+ @handle = mock("Handle", :closed? => false)
30
+ @handle.stub!(:close)
31
+ ::UNIXSocket.stub!(:new).and_return(@handle)
32
+ end
33
+
34
+ it_should_behave_like "a socket"
35
+
36
+ it "should raise a TransportException when it cannot open a socket" do
37
+ ::UNIXSocket.should_receive(:new).and_raise(StandardError)
38
+ lambda { @socket.open }.should raise_error(Thrift::TransportException) { |e| e.type.should == Thrift::TransportException::NOT_OPEN }
39
+ end
40
+
41
+ it "should accept an optional timeout" do
42
+ ::UNIXSocket.stub!(:new)
43
+ Thrift::UNIXSocket.new(@path, 5).timeout.should == 5
44
+ end
45
+ end
46
+
47
+ describe Thrift::UNIXServerSocket do
48
+ before(:each) do
49
+ @path = '/tmp/thrift_spec_socket'
50
+ @socket = Thrift::UNIXServerSocket.new(@path)
51
+ end
52
+
53
+ it "should create a handle when calling listen" do
54
+ UNIXServer.should_receive(:new).with(@path)
55
+ @socket.listen
56
+ end
57
+
58
+ it "should create a Thrift::UNIXSocket to wrap accepted sockets" do
59
+ handle = mock("UNIXServer")
60
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
61
+ @socket.listen
62
+ sock = mock("sock")
63
+ handle.should_receive(:accept).and_return(sock)
64
+ trans = mock("UNIXSocket")
65
+ Thrift::UNIXSocket.should_receive(:new).and_return(trans)
66
+ trans.should_receive(:handle=).with(sock)
67
+ @socket.accept.should == trans
68
+ end
69
+
70
+ it "should close the handle when closed" do
71
+ handle = mock("UNIXServer", :closed? => false)
72
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
73
+ @socket.listen
74
+ handle.should_receive(:close)
75
+ File.stub!(:delete)
76
+ @socket.close
77
+ end
78
+
79
+ it "should delete the socket when closed" do
80
+ handle = mock("UNIXServer", :closed? => false)
81
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
82
+ @socket.listen
83
+ handle.stub!(:close)
84
+ File.should_receive(:delete).with(@path)
85
+ @socket.close
86
+ end
87
+
88
+ it "should return nil when accepting if there is no handle" do
89
+ @socket.accept.should be_nil
90
+ end
91
+
92
+ it "should return true for closed? when appropriate" do
93
+ handle = mock("UNIXServer", :closed? => false)
94
+ UNIXServer.stub!(:new).and_return(handle)
95
+ File.stub!(:delete)
96
+ @socket.listen
97
+ @socket.should_not be_closed
98
+ handle.stub!(:close)
99
+ @socket.close
100
+ @socket.should be_closed
101
+ @socket.listen
102
+ @socket.should_not be_closed
103
+ handle.stub!(:closed?).and_return(true)
104
+ @socket.should be_closed
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,274 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (1.0.0-upfluence)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+ require 'debug_proto_test_types'
9
+
10
+ COMPACT_TEST = ::CompactProtoTestStruct.new({
11
+ %q"byte_boolean_map" => {
12
+ 1 => true,
13
+ 2 => false,
14
+ },
15
+ %q"list_byte_map" => {
16
+ [
17
+ 1,
18
+ 2,
19
+ 3,
20
+ ] => 1,
21
+ [
22
+ 0,
23
+ 1,
24
+ ] => 2,
25
+ [
26
+ ] => 0,
27
+ },
28
+ %q"set_byte_map" => {
29
+ Set.new([
30
+ 1,
31
+ 2,
32
+ 3,
33
+ ]) => 1,
34
+ Set.new([
35
+ 0,
36
+ 1,
37
+ ]) => 2,
38
+ Set.new([
39
+ ]) => 0,
40
+ },
41
+ %q"map_byte_map" => {
42
+ {
43
+ 1 => 1,
44
+ } => 1,
45
+ {
46
+ 2 => 2,
47
+ } => 2,
48
+ {
49
+ } => 0,
50
+ },
51
+ %q"byte_map_map" => {
52
+ 0 => {
53
+ },
54
+ 1 => {
55
+ 1 => 1,
56
+ },
57
+ 2 => {
58
+ 1 => 1,
59
+ 2 => 2,
60
+ },
61
+ },
62
+ %q"byte_set_map" => {
63
+ 0 => Set.new([
64
+ ]),
65
+ 1 => Set.new([
66
+ 1,
67
+ ]),
68
+ 2 => Set.new([
69
+ 1,
70
+ 2,
71
+ ]),
72
+ },
73
+ %q"byte_list_map" => {
74
+ 0 => [
75
+ ],
76
+ 1 => [
77
+ 1,
78
+ ],
79
+ 2 => [
80
+ 1,
81
+ 2,
82
+ ],
83
+ },
84
+ %q"a_byte" => 127,
85
+ %q"a_i16" => 32000,
86
+ %q"a_i32" => 1000000000,
87
+ %q"a_i64" => 1099511627775,
88
+ %q"a_double" => 5.6789,
89
+ %q"a_string" => %q"my string",
90
+ %q"true_field" => true,
91
+ %q"false_field" => false,
92
+ %q"empty_struct_field" => ::Empty.new({
93
+ }),
94
+ %q"byte_list" => [
95
+ -127,
96
+ -1,
97
+ 0,
98
+ 1,
99
+ 127,
100
+ ],
101
+ %q"i16_list" => [
102
+ -1,
103
+ 0,
104
+ 1,
105
+ 32767,
106
+ ],
107
+ %q"i32_list" => [
108
+ -1,
109
+ 0,
110
+ 255,
111
+ 65535,
112
+ 16777215,
113
+ 2147483647,
114
+ ],
115
+ %q"i64_list" => [
116
+ -1,
117
+ 0,
118
+ 255,
119
+ 65535,
120
+ 16777215,
121
+ 4294967295,
122
+ 1099511627775,
123
+ 281474976710655,
124
+ 72057594037927935,
125
+ 9223372036854775807,
126
+ ],
127
+ %q"double_list" => [
128
+ 0.1,
129
+ 0.2,
130
+ 0.3,
131
+ ],
132
+ %q"string_list" => [
133
+ %q"first",
134
+ %q"second",
135
+ %q"third",
136
+ ],
137
+ %q"boolean_list" => [
138
+ true,
139
+ true,
140
+ true,
141
+ false,
142
+ false,
143
+ false,
144
+ ],
145
+ %q"struct_list" => [
146
+ ::Empty.new({
147
+ }),
148
+ ::Empty.new({
149
+ }),
150
+ ],
151
+ %q"byte_set" => Set.new([
152
+ -127,
153
+ -1,
154
+ 0,
155
+ 1,
156
+ 127,
157
+ ]),
158
+ %q"i16_set" => Set.new([
159
+ -1,
160
+ 0,
161
+ 1,
162
+ 32767,
163
+ ]),
164
+ %q"i32_set" => Set.new([
165
+ 1,
166
+ 2,
167
+ 3,
168
+ ]),
169
+ %q"i64_set" => Set.new([
170
+ -1,
171
+ 0,
172
+ 255,
173
+ 65535,
174
+ 16777215,
175
+ 4294967295,
176
+ 1099511627775,
177
+ 281474976710655,
178
+ 72057594037927935,
179
+ 9223372036854775807,
180
+ ]),
181
+ %q"double_set" => Set.new([
182
+ 0.1,
183
+ 0.2,
184
+ 0.3,
185
+ ]),
186
+ %q"string_set" => Set.new([
187
+ %q"first",
188
+ %q"second",
189
+ %q"third",
190
+ ]),
191
+ %q"boolean_set" => Set.new([
192
+ true,
193
+ false,
194
+ ]),
195
+ %q"struct_set" => Set.new([
196
+ ::Empty.new({
197
+ }),
198
+ ]),
199
+ %q"byte_byte_map" => {
200
+ 1 => 2,
201
+ },
202
+ %q"i16_byte_map" => {
203
+ 1 => 1,
204
+ -1 => 1,
205
+ 32767 => 1,
206
+ },
207
+ %q"i32_byte_map" => {
208
+ 1 => 1,
209
+ -1 => 1,
210
+ 2147483647 => 1,
211
+ },
212
+ %q"i64_byte_map" => {
213
+ 0 => 1,
214
+ 1 => 1,
215
+ -1 => 1,
216
+ 9223372036854775807 => 1,
217
+ },
218
+ %q"double_byte_map" => {
219
+ -1.1 => 1,
220
+ 1.1 => 1,
221
+ },
222
+ %q"string_byte_map" => {
223
+ %q"first" => 1,
224
+ %q"second" => 2,
225
+ %q"third" => 3,
226
+ %q"" => 0,
227
+ },
228
+ %q"boolean_byte_map" => {
229
+ true => 1,
230
+ false => 0,
231
+ },
232
+ %q"byte_i16_map" => {
233
+ 1 => 1,
234
+ 2 => -1,
235
+ 3 => 32767,
236
+ },
237
+ %q"byte_i32_map" => {
238
+ 1 => 1,
239
+ 2 => -1,
240
+ 3 => 2147483647,
241
+ },
242
+ %q"byte_i64_map" => {
243
+ 1 => 1,
244
+ 2 => -1,
245
+ 3 => 9223372036854775807,
246
+ },
247
+ %q"byte_double_map" => {
248
+ 1 => 0.1,
249
+ 2 => -0.1,
250
+ 3 => 1e+06,
251
+ },
252
+ %q"byte_string_map" => {
253
+ 1 => %q"",
254
+ 2 => %q"blah",
255
+ 3 => %q"loooooooooooooong string",
256
+ },
257
+ })
258
+
259
+ MYCONST = 2
260
+
261
+ MY_SOME_ENUM = 1
262
+
263
+ MY_SOME_ENUM_1 = 1
264
+
265
+ MY_ENUM_MAP = {
266
+ 1 => 2,
267
+ }
268
+
269
+ EXTRA_CRAZY_MAP = {
270
+ 1 => ::StructWithSomeEnum.new({
271
+ %q"blah" => 2,
272
+ }),
273
+ }
274
+
@@ -0,0 +1,761 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (1.0.0-upfluence)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'thrift'
8
+
9
+ module SomeEnum
10
+ ONE = 1
11
+ TWO = 2
12
+ VALUE_MAP = {1 => "ONE", 2 => "TWO"}
13
+ VALID_VALUES = Set.new([ONE, TWO]).freeze
14
+ end
15
+
16
+ class Doubles
17
+ include ::Thrift::Struct, ::Thrift::Struct_Union
18
+ NAN = 1
19
+ INF = 2
20
+ NEGINF = 3
21
+ REPEATING = 4
22
+ BIG = 5
23
+ TINY = 6
24
+ ZERO = 7
25
+ NEGZERO = 8
26
+
27
+ FIELDS = {
28
+ NAN => {:type => ::Thrift::Types::DOUBLE, :name => 'nan'},
29
+ INF => {:type => ::Thrift::Types::DOUBLE, :name => 'inf'},
30
+ NEGINF => {:type => ::Thrift::Types::DOUBLE, :name => 'neginf'},
31
+ REPEATING => {:type => ::Thrift::Types::DOUBLE, :name => 'repeating'},
32
+ BIG => {:type => ::Thrift::Types::DOUBLE, :name => 'big'},
33
+ TINY => {:type => ::Thrift::Types::DOUBLE, :name => 'tiny'},
34
+ ZERO => {:type => ::Thrift::Types::DOUBLE, :name => 'zero'},
35
+ NEGZERO => {:type => ::Thrift::Types::DOUBLE, :name => 'negzero'}
36
+ }
37
+
38
+ def struct_fields; FIELDS; end
39
+
40
+ def validate
41
+ end
42
+
43
+ ::Thrift::Struct.generate_accessors self
44
+ end
45
+
46
+ class OneOfEach
47
+ include ::Thrift::Struct, ::Thrift::Struct_Union
48
+ IM_TRUE = 1
49
+ IM_FALSE = 2
50
+ A_BITE = 3
51
+ INTEGER16 = 4
52
+ INTEGER32 = 5
53
+ INTEGER64 = 6
54
+ DOUBLE_PRECISION = 7
55
+ SOME_CHARACTERS = 8
56
+ ZOMG_UNICODE = 9
57
+ WHAT_WHO = 10
58
+ BASE64 = 11
59
+ BYTE_LIST = 12
60
+ I16_LIST = 13
61
+ I64_LIST = 14
62
+
63
+ FIELDS = {
64
+ IM_TRUE => {:type => ::Thrift::Types::BOOL, :name => 'im_true'},
65
+ IM_FALSE => {:type => ::Thrift::Types::BOOL, :name => 'im_false'},
66
+ A_BITE => {:type => ::Thrift::Types::BYTE, :name => 'a_bite', :default => 127},
67
+ INTEGER16 => {:type => ::Thrift::Types::I16, :name => 'integer16', :default => 32767},
68
+ INTEGER32 => {:type => ::Thrift::Types::I32, :name => 'integer32'},
69
+ INTEGER64 => {:type => ::Thrift::Types::I64, :name => 'integer64', :default => 10000000000},
70
+ DOUBLE_PRECISION => {:type => ::Thrift::Types::DOUBLE, :name => 'double_precision'},
71
+ SOME_CHARACTERS => {:type => ::Thrift::Types::STRING, :name => 'some_characters'},
72
+ ZOMG_UNICODE => {:type => ::Thrift::Types::STRING, :name => 'zomg_unicode'},
73
+ WHAT_WHO => {:type => ::Thrift::Types::BOOL, :name => 'what_who'},
74
+ BASE64 => {:type => ::Thrift::Types::STRING, :name => 'base64', :binary => true},
75
+ BYTE_LIST => {:type => ::Thrift::Types::LIST, :name => 'byte_list', :default => [
76
+ 1,
77
+ 2,
78
+ 3,
79
+ ], :element => {:type => ::Thrift::Types::BYTE}},
80
+ I16_LIST => {:type => ::Thrift::Types::LIST, :name => 'i16_list', :default => [
81
+ 1,
82
+ 2,
83
+ 3,
84
+ ], :element => {:type => ::Thrift::Types::I16}},
85
+ I64_LIST => {:type => ::Thrift::Types::LIST, :name => 'i64_list', :default => [
86
+ 1,
87
+ 2,
88
+ 3,
89
+ ], :element => {:type => ::Thrift::Types::I64}}
90
+ }
91
+
92
+ def struct_fields; FIELDS; end
93
+
94
+ def validate
95
+ end
96
+
97
+ ::Thrift::Struct.generate_accessors self
98
+ end
99
+
100
+ class Bonk
101
+ include ::Thrift::Struct, ::Thrift::Struct_Union
102
+ TYPE = 1
103
+ MESSAGE = 2
104
+
105
+ FIELDS = {
106
+ TYPE => {:type => ::Thrift::Types::I32, :name => 'type'},
107
+ MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
108
+ }
109
+
110
+ def struct_fields; FIELDS; end
111
+
112
+ def validate
113
+ end
114
+
115
+ ::Thrift::Struct.generate_accessors self
116
+ end
117
+
118
+ class Nesting
119
+ include ::Thrift::Struct, ::Thrift::Struct_Union
120
+ MY_BONK = 1
121
+ MY_OOE = 2
122
+
123
+ FIELDS = {
124
+ MY_BONK => {:type => ::Thrift::Types::STRUCT, :name => 'my_bonk', :class => ::Bonk},
125
+ MY_OOE => {:type => ::Thrift::Types::STRUCT, :name => 'my_ooe', :class => ::OneOfEach}
126
+ }
127
+
128
+ def struct_fields; FIELDS; end
129
+
130
+ def validate
131
+ end
132
+
133
+ ::Thrift::Struct.generate_accessors self
134
+ end
135
+
136
+ class HolyMoley
137
+ include ::Thrift::Struct, ::Thrift::Struct_Union
138
+ BIG = 1
139
+ CONTAIN = 2
140
+ BONKS = 3
141
+
142
+ FIELDS = {
143
+ BIG => {:type => ::Thrift::Types::LIST, :name => 'big', :element => {:type => ::Thrift::Types::STRUCT, :class => ::OneOfEach}},
144
+ CONTAIN => {:type => ::Thrift::Types::SET, :name => 'contain', :element => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRING}}},
145
+ BONKS => {:type => ::Thrift::Types::MAP, :name => 'bonks', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => ::Bonk}}}
146
+ }
147
+
148
+ def struct_fields; FIELDS; end
149
+
150
+ def validate
151
+ end
152
+
153
+ ::Thrift::Struct.generate_accessors self
154
+ end
155
+
156
+ class Backwards
157
+ include ::Thrift::Struct, ::Thrift::Struct_Union
158
+ FIRST_TAG2 = 2
159
+ SECOND_TAG1 = 1
160
+
161
+ FIELDS = {
162
+ FIRST_TAG2 => {:type => ::Thrift::Types::I32, :name => 'first_tag2'},
163
+ SECOND_TAG1 => {:type => ::Thrift::Types::I32, :name => 'second_tag1'}
164
+ }
165
+
166
+ def struct_fields; FIELDS; end
167
+
168
+ def validate
169
+ end
170
+
171
+ ::Thrift::Struct.generate_accessors self
172
+ end
173
+
174
+ class Empty
175
+ include ::Thrift::Struct, ::Thrift::Struct_Union
176
+
177
+ FIELDS = {
178
+
179
+ }
180
+
181
+ def struct_fields; FIELDS; end
182
+
183
+ def validate
184
+ end
185
+
186
+ ::Thrift::Struct.generate_accessors self
187
+ end
188
+
189
+ class Wrapper
190
+ include ::Thrift::Struct, ::Thrift::Struct_Union
191
+ FOO = 1
192
+
193
+ FIELDS = {
194
+ FOO => {:type => ::Thrift::Types::STRUCT, :name => 'foo', :class => ::Empty}
195
+ }
196
+
197
+ def struct_fields; FIELDS; end
198
+
199
+ def validate
200
+ end
201
+
202
+ ::Thrift::Struct.generate_accessors self
203
+ end
204
+
205
+ class RandomStuff
206
+ include ::Thrift::Struct, ::Thrift::Struct_Union
207
+ A = 1
208
+ B = 2
209
+ C = 3
210
+ D = 4
211
+ MYINTLIST = 5
212
+ MAPS = 6
213
+ BIGINT = 7
214
+ TRIPLE = 8
215
+
216
+ FIELDS = {
217
+ A => {:type => ::Thrift::Types::I32, :name => 'a'},
218
+ B => {:type => ::Thrift::Types::I32, :name => 'b'},
219
+ C => {:type => ::Thrift::Types::I32, :name => 'c'},
220
+ D => {:type => ::Thrift::Types::I32, :name => 'd'},
221
+ MYINTLIST => {:type => ::Thrift::Types::LIST, :name => 'myintlist', :element => {:type => ::Thrift::Types::I32}},
222
+ MAPS => {:type => ::Thrift::Types::MAP, :name => 'maps', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Wrapper}},
223
+ BIGINT => {:type => ::Thrift::Types::I64, :name => 'bigint'},
224
+ TRIPLE => {:type => ::Thrift::Types::DOUBLE, :name => 'triple'}
225
+ }
226
+
227
+ def struct_fields; FIELDS; end
228
+
229
+ def validate
230
+ end
231
+
232
+ ::Thrift::Struct.generate_accessors self
233
+ end
234
+
235
+ class Base64
236
+ include ::Thrift::Struct, ::Thrift::Struct_Union
237
+ A = 1
238
+ B1 = 2
239
+ B2 = 3
240
+ B3 = 4
241
+ B4 = 5
242
+ B5 = 6
243
+ B6 = 7
244
+
245
+ FIELDS = {
246
+ A => {:type => ::Thrift::Types::I32, :name => 'a'},
247
+ B1 => {:type => ::Thrift::Types::STRING, :name => 'b1', :binary => true},
248
+ B2 => {:type => ::Thrift::Types::STRING, :name => 'b2', :binary => true},
249
+ B3 => {:type => ::Thrift::Types::STRING, :name => 'b3', :binary => true},
250
+ B4 => {:type => ::Thrift::Types::STRING, :name => 'b4', :binary => true},
251
+ B5 => {:type => ::Thrift::Types::STRING, :name => 'b5', :binary => true},
252
+ B6 => {:type => ::Thrift::Types::STRING, :name => 'b6', :binary => true}
253
+ }
254
+
255
+ def struct_fields; FIELDS; end
256
+
257
+ def validate
258
+ end
259
+
260
+ ::Thrift::Struct.generate_accessors self
261
+ end
262
+
263
+ class CompactProtoTestStruct
264
+ include ::Thrift::Struct, ::Thrift::Struct_Union
265
+ A_BYTE = 1
266
+ A_I16 = 2
267
+ A_I32 = 3
268
+ A_I64 = 4
269
+ A_DOUBLE = 5
270
+ A_STRING = 6
271
+ A_BINARY = 7
272
+ TRUE_FIELD = 8
273
+ FALSE_FIELD = 9
274
+ EMPTY_STRUCT_FIELD = 10
275
+ BYTE_LIST = 11
276
+ I16_LIST = 12
277
+ I32_LIST = 13
278
+ I64_LIST = 14
279
+ DOUBLE_LIST = 15
280
+ STRING_LIST = 16
281
+ BINARY_LIST = 17
282
+ BOOLEAN_LIST = 18
283
+ STRUCT_LIST = 19
284
+ BYTE_SET = 20
285
+ I16_SET = 21
286
+ I32_SET = 22
287
+ I64_SET = 23
288
+ DOUBLE_SET = 24
289
+ STRING_SET = 25
290
+ BINARY_SET = 26
291
+ BOOLEAN_SET = 27
292
+ STRUCT_SET = 28
293
+ BYTE_BYTE_MAP = 29
294
+ I16_BYTE_MAP = 30
295
+ I32_BYTE_MAP = 31
296
+ I64_BYTE_MAP = 32
297
+ DOUBLE_BYTE_MAP = 33
298
+ STRING_BYTE_MAP = 34
299
+ BINARY_BYTE_MAP = 35
300
+ BOOLEAN_BYTE_MAP = 36
301
+ BYTE_I16_MAP = 37
302
+ BYTE_I32_MAP = 38
303
+ BYTE_I64_MAP = 39
304
+ BYTE_DOUBLE_MAP = 40
305
+ BYTE_STRING_MAP = 41
306
+ BYTE_BINARY_MAP = 42
307
+ BYTE_BOOLEAN_MAP = 43
308
+ LIST_BYTE_MAP = 44
309
+ SET_BYTE_MAP = 45
310
+ MAP_BYTE_MAP = 46
311
+ BYTE_MAP_MAP = 47
312
+ BYTE_SET_MAP = 48
313
+ BYTE_LIST_MAP = 49
314
+
315
+ FIELDS = {
316
+ A_BYTE => {:type => ::Thrift::Types::BYTE, :name => 'a_byte'},
317
+ A_I16 => {:type => ::Thrift::Types::I16, :name => 'a_i16'},
318
+ A_I32 => {:type => ::Thrift::Types::I32, :name => 'a_i32'},
319
+ A_I64 => {:type => ::Thrift::Types::I64, :name => 'a_i64'},
320
+ A_DOUBLE => {:type => ::Thrift::Types::DOUBLE, :name => 'a_double'},
321
+ A_STRING => {:type => ::Thrift::Types::STRING, :name => 'a_string'},
322
+ A_BINARY => {:type => ::Thrift::Types::STRING, :name => 'a_binary', :binary => true},
323
+ TRUE_FIELD => {:type => ::Thrift::Types::BOOL, :name => 'true_field'},
324
+ FALSE_FIELD => {:type => ::Thrift::Types::BOOL, :name => 'false_field'},
325
+ EMPTY_STRUCT_FIELD => {:type => ::Thrift::Types::STRUCT, :name => 'empty_struct_field', :class => ::Empty},
326
+ BYTE_LIST => {:type => ::Thrift::Types::LIST, :name => 'byte_list', :element => {:type => ::Thrift::Types::BYTE}},
327
+ I16_LIST => {:type => ::Thrift::Types::LIST, :name => 'i16_list', :element => {:type => ::Thrift::Types::I16}},
328
+ I32_LIST => {:type => ::Thrift::Types::LIST, :name => 'i32_list', :element => {:type => ::Thrift::Types::I32}},
329
+ I64_LIST => {:type => ::Thrift::Types::LIST, :name => 'i64_list', :element => {:type => ::Thrift::Types::I64}},
330
+ DOUBLE_LIST => {:type => ::Thrift::Types::LIST, :name => 'double_list', :element => {:type => ::Thrift::Types::DOUBLE}},
331
+ STRING_LIST => {:type => ::Thrift::Types::LIST, :name => 'string_list', :element => {:type => ::Thrift::Types::STRING}},
332
+ BINARY_LIST => {:type => ::Thrift::Types::LIST, :name => 'binary_list', :element => {:type => ::Thrift::Types::STRING, :binary => true}},
333
+ BOOLEAN_LIST => {:type => ::Thrift::Types::LIST, :name => 'boolean_list', :element => {:type => ::Thrift::Types::BOOL}},
334
+ STRUCT_LIST => {:type => ::Thrift::Types::LIST, :name => 'struct_list', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Empty}},
335
+ BYTE_SET => {:type => ::Thrift::Types::SET, :name => 'byte_set', :element => {:type => ::Thrift::Types::BYTE}},
336
+ I16_SET => {:type => ::Thrift::Types::SET, :name => 'i16_set', :element => {:type => ::Thrift::Types::I16}},
337
+ I32_SET => {:type => ::Thrift::Types::SET, :name => 'i32_set', :element => {:type => ::Thrift::Types::I32}},
338
+ I64_SET => {:type => ::Thrift::Types::SET, :name => 'i64_set', :element => {:type => ::Thrift::Types::I64}},
339
+ DOUBLE_SET => {:type => ::Thrift::Types::SET, :name => 'double_set', :element => {:type => ::Thrift::Types::DOUBLE}},
340
+ STRING_SET => {:type => ::Thrift::Types::SET, :name => 'string_set', :element => {:type => ::Thrift::Types::STRING}},
341
+ BINARY_SET => {:type => ::Thrift::Types::SET, :name => 'binary_set', :element => {:type => ::Thrift::Types::STRING, :binary => true}},
342
+ BOOLEAN_SET => {:type => ::Thrift::Types::SET, :name => 'boolean_set', :element => {:type => ::Thrift::Types::BOOL}},
343
+ STRUCT_SET => {:type => ::Thrift::Types::SET, :name => 'struct_set', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Empty}},
344
+ BYTE_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_byte_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::BYTE}},
345
+ I16_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'i16_byte_map', :key => {:type => ::Thrift::Types::I16}, :value => {:type => ::Thrift::Types::BYTE}},
346
+ I32_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'i32_byte_map', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::BYTE}},
347
+ I64_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'i64_byte_map', :key => {:type => ::Thrift::Types::I64}, :value => {:type => ::Thrift::Types::BYTE}},
348
+ DOUBLE_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'double_byte_map', :key => {:type => ::Thrift::Types::DOUBLE}, :value => {:type => ::Thrift::Types::BYTE}},
349
+ STRING_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'string_byte_map', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::BYTE}},
350
+ BINARY_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'binary_byte_map', :key => {:type => ::Thrift::Types::STRING, :binary => true}, :value => {:type => ::Thrift::Types::BYTE}},
351
+ BOOLEAN_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'boolean_byte_map', :key => {:type => ::Thrift::Types::BOOL}, :value => {:type => ::Thrift::Types::BYTE}},
352
+ BYTE_I16_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_i16_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::I16}},
353
+ BYTE_I32_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_i32_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::I32}},
354
+ BYTE_I64_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_i64_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::I64}},
355
+ BYTE_DOUBLE_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_double_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::DOUBLE}},
356
+ BYTE_STRING_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_string_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::STRING}},
357
+ BYTE_BINARY_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_binary_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::STRING, :binary => true}},
358
+ BYTE_BOOLEAN_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_boolean_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::BOOL}},
359
+ LIST_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'list_byte_map', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::BYTE}}, :value => {:type => ::Thrift::Types::BYTE}},
360
+ SET_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'set_byte_map', :key => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::BYTE}}, :value => {:type => ::Thrift::Types::BYTE}},
361
+ MAP_BYTE_MAP => {:type => ::Thrift::Types::MAP, :name => 'map_byte_map', :key => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::BYTE}}, :value => {:type => ::Thrift::Types::BYTE}},
362
+ BYTE_MAP_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_map_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::BYTE}}},
363
+ BYTE_SET_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_set_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::BYTE}}},
364
+ BYTE_LIST_MAP => {:type => ::Thrift::Types::MAP, :name => 'byte_list_map', :key => {:type => ::Thrift::Types::BYTE}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::BYTE}}}
365
+ }
366
+
367
+ def struct_fields; FIELDS; end
368
+
369
+ def validate
370
+ end
371
+
372
+ ::Thrift::Struct.generate_accessors self
373
+ end
374
+
375
+ class SingleMapTestStruct
376
+ include ::Thrift::Struct, ::Thrift::Struct_Union
377
+ I32_MAP = 1
378
+
379
+ FIELDS = {
380
+ I32_MAP => {:type => ::Thrift::Types::MAP, :name => 'i32_map', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::I32}}
381
+ }
382
+
383
+ def struct_fields; FIELDS; end
384
+
385
+ def validate
386
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field i32_map is unset!') unless @i32_map
387
+ end
388
+
389
+ ::Thrift::Struct.generate_accessors self
390
+ end
391
+
392
+ class ExceptionWithAMap < ::Thrift::Exception
393
+ include ::Thrift::Struct, ::Thrift::Struct_Union
394
+ BLAH = 1
395
+ MAP_FIELD = 2
396
+
397
+ FIELDS = {
398
+ BLAH => {:type => ::Thrift::Types::STRING, :name => 'blah'},
399
+ MAP_FIELD => {:type => ::Thrift::Types::MAP, :name => 'map_field', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
400
+ }
401
+
402
+ def struct_fields; FIELDS; end
403
+
404
+ def validate
405
+ end
406
+
407
+ ::Thrift::Struct.generate_accessors self
408
+ end
409
+
410
+ class BlowUp
411
+ include ::Thrift::Struct, ::Thrift::Struct_Union
412
+ B1 = 1
413
+ B2 = 2
414
+ B3 = 3
415
+ B4 = 4
416
+
417
+ FIELDS = {
418
+ B1 => {:type => ::Thrift::Types::MAP, :name => 'b1', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::I32}}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::STRING}}}},
419
+ B2 => {:type => ::Thrift::Types::MAP, :name => 'b2', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::I32}}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::STRING}}}},
420
+ B3 => {:type => ::Thrift::Types::MAP, :name => 'b3', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::I32}}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::STRING}}}},
421
+ B4 => {:type => ::Thrift::Types::MAP, :name => 'b4', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::I32}}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::STRING}}}}
422
+ }
423
+
424
+ def struct_fields; FIELDS; end
425
+
426
+ def validate
427
+ end
428
+
429
+ ::Thrift::Struct.generate_accessors self
430
+ end
431
+
432
+ class ReverseOrderStruct
433
+ include ::Thrift::Struct, ::Thrift::Struct_Union
434
+ FIRST = 4
435
+ SECOND = 3
436
+ THIRD = 2
437
+ FOURTH = 1
438
+
439
+ FIELDS = {
440
+ FIRST => {:type => ::Thrift::Types::STRING, :name => 'first'},
441
+ SECOND => {:type => ::Thrift::Types::I16, :name => 'second'},
442
+ THIRD => {:type => ::Thrift::Types::I32, :name => 'third'},
443
+ FOURTH => {:type => ::Thrift::Types::I64, :name => 'fourth'}
444
+ }
445
+
446
+ def struct_fields; FIELDS; end
447
+
448
+ def validate
449
+ end
450
+
451
+ ::Thrift::Struct.generate_accessors self
452
+ end
453
+
454
+ class StructWithSomeEnum
455
+ include ::Thrift::Struct, ::Thrift::Struct_Union
456
+ BLAH = 1
457
+
458
+ FIELDS = {
459
+ BLAH => {:type => ::Thrift::Types::I32, :name => 'blah', :enum_class => ::SomeEnum}
460
+ }
461
+
462
+ def struct_fields; FIELDS; end
463
+
464
+ def validate
465
+ unless @blah.nil? || ::SomeEnum::VALID_VALUES.include?(@blah)
466
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field blah!')
467
+ end
468
+ end
469
+
470
+ ::Thrift::Struct.generate_accessors self
471
+ end
472
+
473
+ class TestUnion < ::Thrift::Union
474
+ include ::Thrift::Struct_Union
475
+ class << self
476
+ def string_field(val)
477
+ TestUnion.new(:string_field, val)
478
+ end
479
+
480
+ def i32_field(val)
481
+ TestUnion.new(:i32_field, val)
482
+ end
483
+
484
+ def struct_field(val)
485
+ TestUnion.new(:struct_field, val)
486
+ end
487
+
488
+ def struct_list(val)
489
+ TestUnion.new(:struct_list, val)
490
+ end
491
+
492
+ def other_i32_field(val)
493
+ TestUnion.new(:other_i32_field, val)
494
+ end
495
+
496
+ def enum_field(val)
497
+ TestUnion.new(:enum_field, val)
498
+ end
499
+
500
+ def i32_set(val)
501
+ TestUnion.new(:i32_set, val)
502
+ end
503
+
504
+ def i32_map(val)
505
+ TestUnion.new(:i32_map, val)
506
+ end
507
+ end
508
+
509
+ STRING_FIELD = 1
510
+ I32_FIELD = 2
511
+ STRUCT_FIELD = 3
512
+ STRUCT_LIST = 4
513
+ OTHER_I32_FIELD = 5
514
+ ENUM_FIELD = 6
515
+ I32_SET = 7
516
+ I32_MAP = 8
517
+
518
+ FIELDS = {
519
+ # A doc string
520
+ STRING_FIELD => {:type => ::Thrift::Types::STRING, :name => 'string_field'},
521
+ I32_FIELD => {:type => ::Thrift::Types::I32, :name => 'i32_field'},
522
+ STRUCT_FIELD => {:type => ::Thrift::Types::STRUCT, :name => 'struct_field', :class => ::OneOfEach},
523
+ STRUCT_LIST => {:type => ::Thrift::Types::LIST, :name => 'struct_list', :element => {:type => ::Thrift::Types::STRUCT, :class => ::RandomStuff}},
524
+ OTHER_I32_FIELD => {:type => ::Thrift::Types::I32, :name => 'other_i32_field'},
525
+ ENUM_FIELD => {:type => ::Thrift::Types::I32, :name => 'enum_field', :enum_class => ::SomeEnum},
526
+ I32_SET => {:type => ::Thrift::Types::SET, :name => 'i32_set', :element => {:type => ::Thrift::Types::I32}},
527
+ I32_MAP => {:type => ::Thrift::Types::MAP, :name => 'i32_map', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::I32}}
528
+ }
529
+
530
+ def struct_fields; FIELDS; end
531
+
532
+ def validate
533
+ raise(StandardError, 'Union fields are not set.') if get_set_field.nil? || get_value.nil?
534
+ if get_set_field == :enum_field
535
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field enum_field!') unless ::SomeEnum::VALID_VALUES.include?(get_value)
536
+ end
537
+ end
538
+
539
+ ::Thrift::Union.generate_accessors self
540
+ end
541
+
542
+ class TestUnionMinusStringField < ::Thrift::Union
543
+ include ::Thrift::Struct_Union
544
+ class << self
545
+ def i32_field(val)
546
+ TestUnionMinusStringField.new(:i32_field, val)
547
+ end
548
+
549
+ def struct_field(val)
550
+ TestUnionMinusStringField.new(:struct_field, val)
551
+ end
552
+
553
+ def struct_list(val)
554
+ TestUnionMinusStringField.new(:struct_list, val)
555
+ end
556
+
557
+ def other_i32_field(val)
558
+ TestUnionMinusStringField.new(:other_i32_field, val)
559
+ end
560
+
561
+ def enum_field(val)
562
+ TestUnionMinusStringField.new(:enum_field, val)
563
+ end
564
+
565
+ def i32_set(val)
566
+ TestUnionMinusStringField.new(:i32_set, val)
567
+ end
568
+
569
+ def i32_map(val)
570
+ TestUnionMinusStringField.new(:i32_map, val)
571
+ end
572
+ end
573
+
574
+ I32_FIELD = 2
575
+ STRUCT_FIELD = 3
576
+ STRUCT_LIST = 4
577
+ OTHER_I32_FIELD = 5
578
+ ENUM_FIELD = 6
579
+ I32_SET = 7
580
+ I32_MAP = 8
581
+
582
+ FIELDS = {
583
+ I32_FIELD => {:type => ::Thrift::Types::I32, :name => 'i32_field'},
584
+ STRUCT_FIELD => {:type => ::Thrift::Types::STRUCT, :name => 'struct_field', :class => ::OneOfEach},
585
+ STRUCT_LIST => {:type => ::Thrift::Types::LIST, :name => 'struct_list', :element => {:type => ::Thrift::Types::STRUCT, :class => ::RandomStuff}},
586
+ OTHER_I32_FIELD => {:type => ::Thrift::Types::I32, :name => 'other_i32_field'},
587
+ ENUM_FIELD => {:type => ::Thrift::Types::I32, :name => 'enum_field', :enum_class => ::SomeEnum},
588
+ I32_SET => {:type => ::Thrift::Types::SET, :name => 'i32_set', :element => {:type => ::Thrift::Types::I32}},
589
+ I32_MAP => {:type => ::Thrift::Types::MAP, :name => 'i32_map', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::I32}}
590
+ }
591
+
592
+ def struct_fields; FIELDS; end
593
+
594
+ def validate
595
+ raise(StandardError, 'Union fields are not set.') if get_set_field.nil? || get_value.nil?
596
+ if get_set_field == :enum_field
597
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field enum_field!') unless ::SomeEnum::VALID_VALUES.include?(get_value)
598
+ end
599
+ end
600
+
601
+ ::Thrift::Union.generate_accessors self
602
+ end
603
+
604
+ class ComparableUnion < ::Thrift::Union
605
+ include ::Thrift::Struct_Union
606
+ class << self
607
+ def string_field(val)
608
+ ComparableUnion.new(:string_field, val)
609
+ end
610
+
611
+ def binary_field(val)
612
+ ComparableUnion.new(:binary_field, val)
613
+ end
614
+ end
615
+
616
+ STRING_FIELD = 1
617
+ BINARY_FIELD = 2
618
+
619
+ FIELDS = {
620
+ STRING_FIELD => {:type => ::Thrift::Types::STRING, :name => 'string_field'},
621
+ BINARY_FIELD => {:type => ::Thrift::Types::STRING, :name => 'binary_field', :binary => true}
622
+ }
623
+
624
+ def struct_fields; FIELDS; end
625
+
626
+ def validate
627
+ raise(StandardError, 'Union fields are not set.') if get_set_field.nil? || get_value.nil?
628
+ end
629
+
630
+ ::Thrift::Union.generate_accessors self
631
+ end
632
+
633
+ class StructWithAUnion
634
+ include ::Thrift::Struct, ::Thrift::Struct_Union
635
+ TEST_UNION = 1
636
+
637
+ FIELDS = {
638
+ TEST_UNION => {:type => ::Thrift::Types::STRUCT, :name => 'test_union', :class => ::TestUnion}
639
+ }
640
+
641
+ def struct_fields; FIELDS; end
642
+
643
+ def validate
644
+ end
645
+
646
+ ::Thrift::Struct.generate_accessors self
647
+ end
648
+
649
+ class PrimitiveThenStruct
650
+ include ::Thrift::Struct, ::Thrift::Struct_Union
651
+ BLAH = 1
652
+ BLAH2 = 2
653
+ BW = 3
654
+
655
+ FIELDS = {
656
+ BLAH => {:type => ::Thrift::Types::I32, :name => 'blah'},
657
+ BLAH2 => {:type => ::Thrift::Types::I32, :name => 'blah2'},
658
+ BW => {:type => ::Thrift::Types::STRUCT, :name => 'bw', :class => ::Backwards}
659
+ }
660
+
661
+ def struct_fields; FIELDS; end
662
+
663
+ def validate
664
+ end
665
+
666
+ ::Thrift::Struct.generate_accessors self
667
+ end
668
+
669
+ class StructWithASomemap
670
+ include ::Thrift::Struct, ::Thrift::Struct_Union
671
+ SOMEMAP_FIELD = 1
672
+
673
+ FIELDS = {
674
+ SOMEMAP_FIELD => {:type => ::Thrift::Types::MAP, :name => 'somemap_field', :key => {:type => ::Thrift::Types::I32}, :value => {:type => ::Thrift::Types::I32}}
675
+ }
676
+
677
+ def struct_fields; FIELDS; end
678
+
679
+ def validate
680
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field somemap_field is unset!') unless @somemap_field
681
+ end
682
+
683
+ ::Thrift::Struct.generate_accessors self
684
+ end
685
+
686
+ class BigFieldIdStruct
687
+ include ::Thrift::Struct, ::Thrift::Struct_Union
688
+ FIELD1 = 1
689
+ FIELD2 = 45
690
+
691
+ FIELDS = {
692
+ FIELD1 => {:type => ::Thrift::Types::STRING, :name => 'field1'},
693
+ FIELD2 => {:type => ::Thrift::Types::STRING, :name => 'field2'}
694
+ }
695
+
696
+ def struct_fields; FIELDS; end
697
+
698
+ def validate
699
+ end
700
+
701
+ ::Thrift::Struct.generate_accessors self
702
+ end
703
+
704
+ class BreaksRubyCompactProtocol
705
+ include ::Thrift::Struct, ::Thrift::Struct_Union
706
+ FIELD1 = 1
707
+ FIELD2 = 2
708
+ FIELD3 = 3
709
+
710
+ FIELDS = {
711
+ FIELD1 => {:type => ::Thrift::Types::STRING, :name => 'field1'},
712
+ FIELD2 => {:type => ::Thrift::Types::STRUCT, :name => 'field2', :class => ::BigFieldIdStruct},
713
+ FIELD3 => {:type => ::Thrift::Types::I32, :name => 'field3'}
714
+ }
715
+
716
+ def struct_fields; FIELDS; end
717
+
718
+ def validate
719
+ end
720
+
721
+ ::Thrift::Struct.generate_accessors self
722
+ end
723
+
724
+ class TupleProtocolTestStruct
725
+ include ::Thrift::Struct, ::Thrift::Struct_Union
726
+ FIELD1 = -1
727
+ FIELD2 = -2
728
+ FIELD3 = -3
729
+ FIELD4 = -4
730
+ FIELD5 = -5
731
+ FIELD6 = -6
732
+ FIELD7 = -7
733
+ FIELD8 = -8
734
+ FIELD9 = -9
735
+ FIELD10 = -10
736
+ FIELD11 = -11
737
+ FIELD12 = -12
738
+
739
+ FIELDS = {
740
+ FIELD1 => {:type => ::Thrift::Types::I32, :name => 'field1', :optional => true},
741
+ FIELD2 => {:type => ::Thrift::Types::I32, :name => 'field2', :optional => true},
742
+ FIELD3 => {:type => ::Thrift::Types::I32, :name => 'field3', :optional => true},
743
+ FIELD4 => {:type => ::Thrift::Types::I32, :name => 'field4', :optional => true},
744
+ FIELD5 => {:type => ::Thrift::Types::I32, :name => 'field5', :optional => true},
745
+ FIELD6 => {:type => ::Thrift::Types::I32, :name => 'field6', :optional => true},
746
+ FIELD7 => {:type => ::Thrift::Types::I32, :name => 'field7', :optional => true},
747
+ FIELD8 => {:type => ::Thrift::Types::I32, :name => 'field8', :optional => true},
748
+ FIELD9 => {:type => ::Thrift::Types::I32, :name => 'field9', :optional => true},
749
+ FIELD10 => {:type => ::Thrift::Types::I32, :name => 'field10', :optional => true},
750
+ FIELD11 => {:type => ::Thrift::Types::I32, :name => 'field11', :optional => true},
751
+ FIELD12 => {:type => ::Thrift::Types::I32, :name => 'field12', :optional => true}
752
+ }
753
+
754
+ def struct_fields; FIELDS; end
755
+
756
+ def validate
757
+ end
758
+
759
+ ::Thrift::Struct.generate_accessors self
760
+ end
761
+