log4ever 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/.gitignore +2 -1
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +7 -1
  4. data/README.md +3 -1
  5. data/lib/log4r/evernote.rb +10 -24
  6. data/lib/log4r/outputter/evernoteoutputter.rb +3 -11
  7. data/log4ever.gemspec +2 -1
  8. data/spec/log4ever_spec.rb +24 -17
  9. metadata +40 -58
  10. data/.project +0 -11
  11. data/lib/log4r/evernote/lib/Evernote/EDAM/errors_constants.rb +0 -14
  12. data/lib/log4r/evernote/lib/Evernote/EDAM/errors_types.rb +0 -128
  13. data/lib/log4r/evernote/lib/Evernote/EDAM/limits_constants.rb +0 -240
  14. data/lib/log4r/evernote/lib/Evernote/EDAM/limits_types.rb +0 -13
  15. data/lib/log4r/evernote/lib/Evernote/EDAM/note_store.rb +0 -5487
  16. data/lib/log4r/evernote/lib/Evernote/EDAM/note_store_constants.rb +0 -14
  17. data/lib/log4r/evernote/lib/Evernote/EDAM/note_store_types.rb +0 -1012
  18. data/lib/log4r/evernote/lib/Evernote/EDAM/types_constants.rb +0 -20
  19. data/lib/log4r/evernote/lib/Evernote/EDAM/types_types.rb +0 -1792
  20. data/lib/log4r/evernote/lib/Evernote/EDAM/user_store.rb +0 -549
  21. data/lib/log4r/evernote/lib/Evernote/EDAM/user_store_constants.rb +0 -18
  22. data/lib/log4r/evernote/lib/Evernote/EDAM/user_store_types.rb +0 -415
  23. data/lib/log4r/evernote/lib/thrift/client.rb +0 -62
  24. data/lib/log4r/evernote/lib/thrift/core_ext/fixnum.rb +0 -29
  25. data/lib/log4r/evernote/lib/thrift/core_ext.rb +0 -23
  26. data/lib/log4r/evernote/lib/thrift/exceptions.rb +0 -84
  27. data/lib/log4r/evernote/lib/thrift/processor.rb +0 -57
  28. data/lib/log4r/evernote/lib/thrift/protocol/base_protocol.rb +0 -290
  29. data/lib/log4r/evernote/lib/thrift/protocol/binary_protocol.rb +0 -229
  30. data/lib/log4r/evernote/lib/thrift/protocol/binary_protocol_accelerated.rb +0 -39
  31. data/lib/log4r/evernote/lib/thrift/protocol/compact_protocol.rb +0 -426
  32. data/lib/log4r/evernote/lib/thrift/serializer/deserializer.rb +0 -33
  33. data/lib/log4r/evernote/lib/thrift/serializer/serializer.rb +0 -34
  34. data/lib/log4r/evernote/lib/thrift/server/base_server.rb +0 -31
  35. data/lib/log4r/evernote/lib/thrift/server/mongrel_http_server.rb +0 -58
  36. data/lib/log4r/evernote/lib/thrift/server/nonblocking_server.rb +0 -305
  37. data/lib/log4r/evernote/lib/thrift/server/simple_server.rb +0 -43
  38. data/lib/log4r/evernote/lib/thrift/server/thread_pool_server.rb +0 -75
  39. data/lib/log4r/evernote/lib/thrift/server/threaded_server.rb +0 -47
  40. data/lib/log4r/evernote/lib/thrift/struct.rb +0 -237
  41. data/lib/log4r/evernote/lib/thrift/struct_union.rb +0 -192
  42. data/lib/log4r/evernote/lib/thrift/thrift_native.rb +0 -24
  43. data/lib/log4r/evernote/lib/thrift/transport/base_server_transport.rb +0 -37
  44. data/lib/log4r/evernote/lib/thrift/transport/base_transport.rb +0 -107
  45. data/lib/log4r/evernote/lib/thrift/transport/buffered_transport.rb +0 -108
  46. data/lib/log4r/evernote/lib/thrift/transport/framed_transport.rb +0 -116
  47. data/lib/log4r/evernote/lib/thrift/transport/http_client_transport.rb +0 -53
  48. data/lib/log4r/evernote/lib/thrift/transport/io_stream_transport.rb +0 -39
  49. data/lib/log4r/evernote/lib/thrift/transport/memory_buffer_transport.rb +0 -125
  50. data/lib/log4r/evernote/lib/thrift/transport/server_socket.rb +0 -63
  51. data/lib/log4r/evernote/lib/thrift/transport/socket.rb +0 -137
  52. data/lib/log4r/evernote/lib/thrift/transport/unix_server_socket.rb +0 -60
  53. data/lib/log4r/evernote/lib/thrift/transport/unix_socket.rb +0 -40
  54. data/lib/log4r/evernote/lib/thrift/types.rb +0 -101
  55. data/lib/log4r/evernote/lib/thrift/union.rb +0 -179
  56. data/lib/log4r/evernote/lib/thrift.rb +0 -64
@@ -1,426 +0,0 @@
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
- module Thrift
21
- class CompactProtocol < BaseProtocol
22
-
23
- PROTOCOL_ID = [0x82].pack('c').unpack('c').first
24
- VERSION = 1
25
- VERSION_MASK = 0x1f
26
- TYPE_MASK = 0xE0
27
- TYPE_SHIFT_AMOUNT = 5
28
-
29
- TSTOP = ["", Types::STOP, 0]
30
-
31
- #
32
- # All of the on-wire type codes.
33
- #
34
- class CompactTypes
35
- BOOLEAN_TRUE = 0x01
36
- BOOLEAN_FALSE = 0x02
37
- BYTE = 0x03
38
- I16 = 0x04
39
- I32 = 0x05
40
- I64 = 0x06
41
- DOUBLE = 0x07
42
- BINARY = 0x08
43
- LIST = 0x09
44
- SET = 0x0A
45
- MAP = 0x0B
46
- STRUCT = 0x0C
47
-
48
- def self.is_bool_type?(b)
49
- (b & 0x0f) == BOOLEAN_TRUE || (b & 0x0f) == BOOLEAN_FALSE
50
- end
51
-
52
- COMPACT_TO_TTYPE = {
53
- Types::STOP => Types::STOP,
54
- BOOLEAN_FALSE => Types::BOOL,
55
- BOOLEAN_TRUE => Types::BOOL,
56
- BYTE => Types::BYTE,
57
- I16 => Types::I16,
58
- I32 => Types::I32,
59
- I64 => Types::I64,
60
- DOUBLE => Types::DOUBLE,
61
- BINARY => Types::STRING,
62
- LIST => Types::LIST,
63
- SET => Types::SET,
64
- MAP => Types::MAP,
65
- STRUCT => Types::STRUCT
66
- }
67
-
68
- TTYPE_TO_COMPACT = {
69
- Types::STOP => Types::STOP,
70
- Types::BOOL => BOOLEAN_TRUE,
71
- Types::BYTE => BYTE,
72
- Types::I16 => I16,
73
- Types::I32 => I32,
74
- Types::I64 => I64,
75
- Types::DOUBLE => DOUBLE,
76
- Types::STRING => BINARY,
77
- Types::LIST => LIST,
78
- Types::SET => SET,
79
- Types::MAP => MAP,
80
- Types::STRUCT => STRUCT
81
- }
82
-
83
- def self.get_ttype(compact_type)
84
- val = COMPACT_TO_TTYPE[compact_type & 0x0f]
85
- raise "don't know what type: #{compact_type & 0x0f}" unless val
86
- val
87
- end
88
-
89
- def self.get_compact_type(ttype)
90
- val = TTYPE_TO_COMPACT[ttype]
91
- raise "don't know what type: #{ttype & 0x0f}" unless val
92
- val
93
- end
94
- end
95
-
96
- def initialize(transport)
97
- super(transport)
98
-
99
- @last_field = [0]
100
- @boolean_value = nil
101
-
102
- # Pre-allocated read buffer for read_double().
103
- @rbuf = "\0" * 8
104
- @rbuf.force_encoding("BINARY") if @rbuf.respond_to?(:force_encoding)
105
- end
106
-
107
- def write_message_begin(name, type, seqid)
108
- write_byte(PROTOCOL_ID)
109
- write_byte((VERSION & VERSION_MASK) | ((type << TYPE_SHIFT_AMOUNT) & TYPE_MASK))
110
- write_varint32(seqid)
111
- write_string(name)
112
- nil
113
- end
114
-
115
- def write_struct_begin(name)
116
- @last_field.push(0)
117
- nil
118
- end
119
-
120
- def write_struct_end
121
- @last_field.pop
122
- nil
123
- end
124
-
125
- def write_field_begin(name, type, id)
126
- if type == Types::BOOL
127
- # we want to possibly include the value, so we'll wait.
128
- @boolean_field = [type, id]
129
- else
130
- write_field_begin_internal(type, id)
131
- end
132
- nil
133
- end
134
-
135
- #
136
- # The workhorse of writeFieldBegin. It has the option of doing a
137
- # 'type override' of the type header. This is used specifically in the
138
- # boolean field case.
139
- #
140
- def write_field_begin_internal(type, id, type_override=nil)
141
- last_id = @last_field.pop
142
-
143
- # if there's a type override, use that.
144
- typeToWrite = type_override || CompactTypes.get_compact_type(type)
145
-
146
- # check if we can use delta encoding for the field id
147
- if id > last_id && id - last_id <= 15
148
- # write them together
149
- write_byte((id - last_id) << 4 | typeToWrite)
150
- else
151
- # write them separate
152
- write_byte(typeToWrite)
153
- write_i16(id)
154
- end
155
-
156
- @last_field.push(id)
157
- nil
158
- end
159
-
160
- def write_field_stop
161
- write_byte(Types::STOP)
162
- end
163
-
164
- def write_map_begin(ktype, vtype, size)
165
- if (size == 0)
166
- write_byte(0)
167
- else
168
- write_varint32(size)
169
- write_byte(CompactTypes.get_compact_type(ktype) << 4 | CompactTypes.get_compact_type(vtype))
170
- end
171
- end
172
-
173
- def write_list_begin(etype, size)
174
- write_collection_begin(etype, size)
175
- end
176
-
177
- def write_set_begin(etype, size)
178
- write_collection_begin(etype, size);
179
- end
180
-
181
- def write_bool(bool)
182
- type = bool ? CompactTypes::BOOLEAN_TRUE : CompactTypes::BOOLEAN_FALSE
183
- unless @boolean_field.nil?
184
- # we haven't written the field header yet
185
- write_field_begin_internal(@boolean_field.first, @boolean_field.last, type)
186
- @boolean_field = nil
187
- else
188
- # we're not part of a field, so just write the value.
189
- write_byte(type)
190
- end
191
- end
192
-
193
- def write_byte(byte)
194
- @trans.write([byte].pack('c'))
195
- end
196
-
197
- def write_i16(i16)
198
- write_varint32(int_to_zig_zag(i16))
199
- end
200
-
201
- def write_i32(i32)
202
- write_varint32(int_to_zig_zag(i32))
203
- end
204
-
205
- def write_i64(i64)
206
- write_varint64(long_to_zig_zag(i64))
207
- end
208
-
209
- def write_double(dub)
210
- @trans.write([dub].pack("G").reverse)
211
- end
212
-
213
- def write_string(str)
214
- write_varint32(str.length)
215
- @trans.write(str)
216
- end
217
-
218
- def read_message_begin
219
- protocol_id = read_byte()
220
- if protocol_id != PROTOCOL_ID
221
- raise ProtocolException.new("Expected protocol id #{PROTOCOL_ID} but got #{protocol_id}")
222
- end
223
-
224
- version_and_type = read_byte()
225
- version = version_and_type & VERSION_MASK
226
- if (version != VERSION)
227
- raise ProtocolException.new("Expected version #{VERSION} but got #{version}");
228
- end
229
-
230
- type = (version_and_type >> TYPE_SHIFT_AMOUNT) & 0x03
231
- seqid = read_varint32()
232
- messageName = read_string()
233
- [messageName, type, seqid]
234
- end
235
-
236
- def read_struct_begin
237
- @last_field.push(0)
238
- ""
239
- end
240
-
241
- def read_struct_end
242
- @last_field.pop()
243
- nil
244
- end
245
-
246
- def read_field_begin
247
- type = read_byte()
248
-
249
- # if it's a stop, then we can return immediately, as the struct is over.
250
- if (type & 0x0f) == Types::STOP
251
- TSTOP
252
- else
253
- field_id = nil
254
-
255
- # mask off the 4 MSB of the type header. it could contain a field id delta.
256
- modifier = (type & 0xf0) >> 4
257
- if modifier == 0
258
- # not a delta. look ahead for the zigzag varint field id.
259
- @last_field.pop
260
- field_id = read_i16()
261
- else
262
- # has a delta. add the delta to the last read field id.
263
- field_id = @last_field.pop + modifier
264
- end
265
-
266
- # if this happens to be a boolean field, the value is encoded in the type
267
- if CompactTypes.is_bool_type?(type)
268
- # save the boolean value in a special instance variable.
269
- @bool_value = (type & 0x0f) == CompactTypes::BOOLEAN_TRUE
270
- end
271
-
272
- # push the new field onto the field stack so we can keep the deltas going.
273
- @last_field.push(field_id)
274
- ["", CompactTypes.get_ttype(type & 0x0f), field_id]
275
- end
276
- end
277
-
278
- def read_map_begin
279
- size = read_varint32()
280
- key_and_value_type = size == 0 ? 0 : read_byte()
281
- [CompactTypes.get_ttype(key_and_value_type >> 4), CompactTypes.get_ttype(key_and_value_type & 0xf), size]
282
- end
283
-
284
- def read_list_begin
285
- size_and_type = read_byte()
286
- size = (size_and_type >> 4) & 0x0f
287
- if size == 15
288
- size = read_varint32()
289
- end
290
- type = CompactTypes.get_ttype(size_and_type)
291
- [type, size]
292
- end
293
-
294
- def read_set_begin
295
- read_list_begin
296
- end
297
-
298
- def read_bool
299
- unless @bool_value.nil?
300
- bv = @bool_value
301
- @bool_value = nil
302
- bv
303
- else
304
- read_byte() == CompactTypes::BOOLEAN_TRUE
305
- end
306
- end
307
-
308
- def read_byte
309
- val = trans.read_byte
310
- if (val > 0x7f)
311
- val = 0 - ((val - 1) ^ 0xff)
312
- end
313
- val
314
- end
315
-
316
- def read_i16
317
- zig_zag_to_int(read_varint32())
318
- end
319
-
320
- def read_i32
321
- zig_zag_to_int(read_varint32())
322
- end
323
-
324
- def read_i64
325
- zig_zag_to_long(read_varint64())
326
- end
327
-
328
- def read_double
329
- trans.read_into_buffer(@rbuf, 8)
330
- val = @rbuf.reverse.unpack('G').first
331
- val
332
- end
333
-
334
- def read_string
335
- size = read_varint32()
336
- trans.read_all(size)
337
- end
338
-
339
-
340
- private
341
-
342
- #
343
- # Abstract method for writing the start of lists and sets. List and sets on
344
- # the wire differ only by the type indicator.
345
- #
346
- def write_collection_begin(elem_type, size)
347
- if size <= 14
348
- write_byte(size << 4 | CompactTypes.get_compact_type(elem_type))
349
- else
350
- write_byte(0xf0 | CompactTypes.get_compact_type(elem_type))
351
- write_varint32(size)
352
- end
353
- end
354
-
355
- def write_varint32(n)
356
- # int idx = 0;
357
- while true
358
- if (n & ~0x7F) == 0
359
- # i32buf[idx++] = (byte)n;
360
- write_byte(n)
361
- break
362
- # return;
363
- else
364
- # i32buf[idx++] = (byte)((n & 0x7F) | 0x80);
365
- write_byte((n & 0x7F) | 0x80)
366
- n = n >> 7
367
- end
368
- end
369
- # trans_.write(i32buf, 0, idx);
370
- end
371
-
372
- SEVEN_BIT_MASK = 0x7F
373
- EVERYTHING_ELSE_MASK = ~SEVEN_BIT_MASK
374
-
375
- def write_varint64(n)
376
- while true
377
- if (n & EVERYTHING_ELSE_MASK) == 0 #TODO need to find a way to make this into a long...
378
- write_byte(n)
379
- break
380
- else
381
- write_byte((n & SEVEN_BIT_MASK) | 0x80)
382
- n >>= 7
383
- end
384
- end
385
- end
386
-
387
- def read_varint32()
388
- read_varint64()
389
- end
390
-
391
- def read_varint64()
392
- shift = 0
393
- result = 0
394
- while true
395
- b = read_byte()
396
- result |= (b & 0x7f) << shift
397
- break if (b & 0x80) != 0x80
398
- shift += 7
399
- end
400
- result
401
- end
402
-
403
- def int_to_zig_zag(n)
404
- (n << 1) ^ (n >> 31)
405
- end
406
-
407
- def long_to_zig_zag(l)
408
- # puts "zz encoded #{l} to #{(l << 1) ^ (l >> 63)}"
409
- (l << 1) ^ (l >> 63)
410
- end
411
-
412
- def zig_zag_to_int(n)
413
- (n >> 1) ^ -(n & 1)
414
- end
415
-
416
- def zig_zag_to_long(n)
417
- (n >> 1) ^ -(n & 1)
418
- end
419
- end
420
-
421
- class CompactProtocolFactory < BaseProtocolFactory
422
- def get_protocol(trans)
423
- CompactProtocol.new(trans)
424
- end
425
- end
426
- end
@@ -1,33 +0,0 @@
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
- module Thrift
21
- class Deserializer
22
- def initialize(protocol_factory = BinaryProtocolFactory.new)
23
- @transport = MemoryBufferTransport.new
24
- @protocol = protocol_factory.get_protocol(@transport)
25
- end
26
-
27
- def deserialize(base, buffer)
28
- @transport.reset_buffer(buffer)
29
- base.read(@protocol)
30
- base
31
- end
32
- end
33
- end
@@ -1,34 +0,0 @@
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
- module Thrift
21
- class Serializer
22
- def initialize(protocol_factory = BinaryProtocolFactory.new)
23
- @transport = MemoryBufferTransport.new
24
- @protocol = protocol_factory.get_protocol(@transport)
25
- end
26
-
27
- def serialize(base)
28
- @transport.reset_buffer
29
- base.write(@protocol)
30
- @transport.read(@transport.available)
31
- end
32
- end
33
- end
34
-
@@ -1,31 +0,0 @@
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
- module Thrift
21
- class BaseServer
22
- def initialize(processor, server_transport, transport_factory=nil, protocol_factory=nil)
23
- @processor = processor
24
- @server_transport = server_transport
25
- @transport_factory = transport_factory ? transport_factory : Thrift::BaseTransportFactory.new
26
- @protocol_factory = protocol_factory ? protocol_factory : Thrift::BinaryProtocolFactory.new
27
- end
28
-
29
- def serve; nil; end
30
- end
31
- end
@@ -1,58 +0,0 @@
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 'mongrel'
21
-
22
- ## Sticks a service on a URL, using mongrel to do the HTTP work
23
- module Thrift
24
- class MongrelHTTPServer < BaseServer
25
- class Handler < Mongrel::HttpHandler
26
- def initialize(processor, protocol_factory)
27
- @processor = processor
28
- @protocol_factory = protocol_factory
29
- end
30
-
31
- def process(request, response)
32
- if request.params["REQUEST_METHOD"] == "POST"
33
- response.start(200) do |head, out|
34
- head["Content-Type"] = "application/x-thrift"
35
- transport = IOStreamTransport.new request.body, out
36
- protocol = @protocol_factory.get_protocol transport
37
- @processor.process protocol, protocol
38
- end
39
- else
40
- response.start(404) { }
41
- end
42
- end
43
- end
44
-
45
- def initialize(processor, opts={})
46
- port = opts[:port] || 80
47
- ip = opts[:ip] || "0.0.0.0"
48
- path = opts[:path] || ""
49
- protocol_factory = opts[:protocol_factory] || BinaryProtocolFactory.new
50
- @server = Mongrel::HttpServer.new ip, port
51
- @server.register "/#{path}", Handler.new(processor, protocol_factory)
52
- end
53
-
54
- def serve
55
- @server.run.join
56
- end
57
- end
58
- end