log4ever 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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