Subversion Repositories SmartDukaan

Rev

Rev 30 | Details | Compare with Previous | Last modification | View Log | RSS feed

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