]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
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 | #include <ruby.h> | |
21 | #include <bytes.h> | |
22 | #include <struct.h> | |
23 | #include <binary_protocol_accelerated.h> | |
24 | #include <compact_protocol.h> | |
25 | #include <memory_buffer.h> | |
26 | ||
27 | // cached classes/modules | |
28 | VALUE rb_cSet; | |
29 | VALUE thrift_module; | |
30 | VALUE thrift_bytes_module; | |
31 | VALUE thrift_types_module; | |
32 | ||
33 | // TType constants | |
34 | int TTYPE_STOP; | |
35 | int TTYPE_BOOL; | |
36 | int TTYPE_BYTE; | |
37 | int TTYPE_I16; | |
38 | int TTYPE_I32; | |
39 | int TTYPE_I64; | |
40 | int TTYPE_DOUBLE; | |
41 | int TTYPE_STRING; | |
42 | int TTYPE_MAP; | |
43 | int TTYPE_SET; | |
44 | int TTYPE_LIST; | |
45 | int TTYPE_STRUCT; | |
46 | ||
47 | // method ids | |
48 | ID validate_method_id; | |
49 | ID write_struct_begin_method_id; | |
50 | ID write_struct_end_method_id; | |
51 | ID write_field_begin_method_id; | |
52 | ID write_field_end_method_id; | |
53 | ID write_boolean_method_id; | |
54 | ID write_byte_method_id; | |
55 | ID write_i16_method_id; | |
56 | ID write_i32_method_id; | |
57 | ID write_i64_method_id; | |
58 | ID write_double_method_id; | |
59 | ID write_string_method_id; | |
60 | ID write_binary_method_id; | |
61 | ID write_map_begin_method_id; | |
62 | ID write_map_end_method_id; | |
63 | ID write_list_begin_method_id; | |
64 | ID write_list_end_method_id; | |
65 | ID write_set_begin_method_id; | |
66 | ID write_set_end_method_id; | |
67 | ID read_bool_method_id; | |
68 | ID read_byte_method_id; | |
69 | ID read_i16_method_id; | |
70 | ID read_i32_method_id; | |
71 | ID read_i64_method_id; | |
72 | ID read_string_method_id; | |
73 | ID read_binary_method_id; | |
74 | ID read_double_method_id; | |
75 | ID read_map_begin_method_id; | |
76 | ID read_map_end_method_id; | |
77 | ID read_list_begin_method_id; | |
78 | ID read_list_end_method_id; | |
79 | ID read_set_begin_method_id; | |
80 | ID read_set_end_method_id; | |
81 | ID read_struct_begin_method_id; | |
82 | ID read_struct_end_method_id; | |
83 | ID read_field_begin_method_id; | |
84 | ID read_field_end_method_id; | |
85 | ID keys_method_id; | |
86 | ID entries_method_id; | |
87 | ID write_field_stop_method_id; | |
88 | ID skip_method_id; | |
89 | ID write_method_id; | |
90 | ID read_all_method_id; | |
91 | ID read_into_buffer_method_id; | |
92 | ID force_binary_encoding_id; | |
93 | ID convert_to_utf8_byte_buffer_id; | |
94 | ID convert_to_string_id; | |
95 | ||
96 | // constant ids | |
97 | ID fields_const_id; | |
98 | ID transport_ivar_id; | |
99 | ID strict_read_ivar_id; | |
100 | ID strict_write_ivar_id; | |
101 | ||
102 | // cached symbols | |
103 | VALUE type_sym; | |
104 | VALUE name_sym; | |
105 | VALUE key_sym; | |
106 | VALUE value_sym; | |
107 | VALUE element_sym; | |
108 | VALUE class_sym; | |
109 | VALUE binary_sym; | |
110 | VALUE protocol_exception_class; | |
111 | ||
112 | void Init_thrift_native() { | |
113 | // cached classes | |
114 | thrift_module = rb_const_get(rb_cObject, rb_intern("Thrift")); | |
115 | thrift_bytes_module = rb_const_get(thrift_module, rb_intern("Bytes")); | |
116 | thrift_types_module = rb_const_get(thrift_module, rb_intern("Types")); | |
117 | rb_cSet = rb_const_get(rb_cObject, rb_intern("Set")); | |
118 | protocol_exception_class = rb_const_get(thrift_module, rb_intern("ProtocolException")); | |
119 | ||
120 | // Init ttype constants | |
121 | TTYPE_BOOL = FIX2INT(rb_const_get(thrift_types_module, rb_intern("BOOL"))); | |
122 | TTYPE_BYTE = FIX2INT(rb_const_get(thrift_types_module, rb_intern("BYTE"))); | |
123 | TTYPE_I16 = FIX2INT(rb_const_get(thrift_types_module, rb_intern("I16"))); | |
124 | TTYPE_I32 = FIX2INT(rb_const_get(thrift_types_module, rb_intern("I32"))); | |
125 | TTYPE_I64 = FIX2INT(rb_const_get(thrift_types_module, rb_intern("I64"))); | |
126 | TTYPE_DOUBLE = FIX2INT(rb_const_get(thrift_types_module, rb_intern("DOUBLE"))); | |
127 | TTYPE_STRING = FIX2INT(rb_const_get(thrift_types_module, rb_intern("STRING"))); | |
128 | TTYPE_MAP = FIX2INT(rb_const_get(thrift_types_module, rb_intern("MAP"))); | |
129 | TTYPE_SET = FIX2INT(rb_const_get(thrift_types_module, rb_intern("SET"))); | |
130 | TTYPE_LIST = FIX2INT(rb_const_get(thrift_types_module, rb_intern("LIST"))); | |
131 | TTYPE_STRUCT = FIX2INT(rb_const_get(thrift_types_module, rb_intern("STRUCT"))); | |
132 | ||
133 | // method ids | |
134 | validate_method_id = rb_intern("validate"); | |
135 | write_struct_begin_method_id = rb_intern("write_struct_begin"); | |
136 | write_struct_end_method_id = rb_intern("write_struct_end"); | |
137 | write_field_begin_method_id = rb_intern("write_field_begin"); | |
138 | write_field_end_method_id = rb_intern("write_field_end"); | |
139 | write_boolean_method_id = rb_intern("write_bool"); | |
140 | write_byte_method_id = rb_intern("write_byte"); | |
141 | write_i16_method_id = rb_intern("write_i16"); | |
142 | write_i32_method_id = rb_intern("write_i32"); | |
143 | write_i64_method_id = rb_intern("write_i64"); | |
144 | write_double_method_id = rb_intern("write_double"); | |
145 | write_string_method_id = rb_intern("write_string"); | |
146 | write_binary_method_id = rb_intern("write_binary"); | |
147 | write_map_begin_method_id = rb_intern("write_map_begin"); | |
148 | write_map_end_method_id = rb_intern("write_map_end"); | |
149 | write_list_begin_method_id = rb_intern("write_list_begin"); | |
150 | write_list_end_method_id = rb_intern("write_list_end"); | |
151 | write_set_begin_method_id = rb_intern("write_set_begin"); | |
152 | write_set_end_method_id = rb_intern("write_set_end"); | |
153 | read_bool_method_id = rb_intern("read_bool"); | |
154 | read_byte_method_id = rb_intern("read_byte"); | |
155 | read_i16_method_id = rb_intern("read_i16"); | |
156 | read_i32_method_id = rb_intern("read_i32"); | |
157 | read_i64_method_id = rb_intern("read_i64"); | |
158 | read_string_method_id = rb_intern("read_string"); | |
159 | read_binary_method_id = rb_intern("read_binary"); | |
160 | read_double_method_id = rb_intern("read_double"); | |
161 | read_map_begin_method_id = rb_intern("read_map_begin"); | |
162 | read_map_end_method_id = rb_intern("read_map_end"); | |
163 | read_list_begin_method_id = rb_intern("read_list_begin"); | |
164 | read_list_end_method_id = rb_intern("read_list_end"); | |
165 | read_set_begin_method_id = rb_intern("read_set_begin"); | |
166 | read_set_end_method_id = rb_intern("read_set_end"); | |
167 | read_struct_begin_method_id = rb_intern("read_struct_begin"); | |
168 | read_struct_end_method_id = rb_intern("read_struct_end"); | |
169 | read_field_begin_method_id = rb_intern("read_field_begin"); | |
170 | read_field_end_method_id = rb_intern("read_field_end"); | |
171 | keys_method_id = rb_intern("keys"); | |
172 | entries_method_id = rb_intern("entries"); | |
173 | write_field_stop_method_id = rb_intern("write_field_stop"); | |
174 | skip_method_id = rb_intern("skip"); | |
175 | write_method_id = rb_intern("write"); | |
176 | read_all_method_id = rb_intern("read_all"); | |
177 | read_into_buffer_method_id = rb_intern("read_into_buffer"); | |
178 | force_binary_encoding_id = rb_intern("force_binary_encoding"); | |
179 | convert_to_utf8_byte_buffer_id = rb_intern("convert_to_utf8_byte_buffer"); | |
180 | convert_to_string_id = rb_intern("convert_to_string"); | |
181 | ||
182 | // constant ids | |
183 | fields_const_id = rb_intern("FIELDS"); | |
184 | transport_ivar_id = rb_intern("@trans"); | |
185 | strict_read_ivar_id = rb_intern("@strict_read"); | |
186 | strict_write_ivar_id = rb_intern("@strict_write"); | |
187 | ||
188 | // cached symbols | |
189 | type_sym = ID2SYM(rb_intern("type")); | |
190 | name_sym = ID2SYM(rb_intern("name")); | |
191 | key_sym = ID2SYM(rb_intern("key")); | |
192 | value_sym = ID2SYM(rb_intern("value")); | |
193 | element_sym = ID2SYM(rb_intern("element")); | |
194 | class_sym = ID2SYM(rb_intern("class")); | |
195 | binary_sym = ID2SYM(rb_intern("binary")); | |
196 | ||
197 | Init_struct(); | |
198 | Init_binary_protocol_accelerated(); | |
199 | Init_compact_protocol(); | |
200 | Init_memory_buffer(); | |
201 | } |