cloudi 1.3.2 → 1.3.3
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.
- data.tar.gz.sig +3 -1
- data/README.markdown +2 -0
- data/lib/cloudi.rb +220 -145
- metadata +8 -8
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
w�%��T�� B2u=�D5��KA��dr �;Ȃ��N=�)�����.�%M$)��G�
|
2
|
+
�8FцM
|
3
|
+
��,�����97�Oc�:Z �]�,
|
data/README.markdown
CHANGED
data/lib/cloudi.rb
CHANGED
@@ -73,11 +73,22 @@ module CloudI
|
|
73
73
|
raise InvalidInputException
|
74
74
|
end
|
75
75
|
@initialization_complete = false
|
76
|
+
@terminate = false
|
76
77
|
@size = buffer_size_str.to_i
|
77
78
|
@callbacks = Hash.new
|
78
|
-
|
79
|
+
@timeout_terminate = 1000 # TIMEOUT_TERMINATE_MIN
|
80
|
+
send(Erlang.term_to_binary(:init))
|
79
81
|
poll_request(false)
|
80
82
|
end
|
83
|
+
attr_reader :process_index
|
84
|
+
attr_reader :process_count
|
85
|
+
attr_reader :process_count_max
|
86
|
+
attr_reader :process_count_min
|
87
|
+
attr_reader :prefix
|
88
|
+
attr_reader :timeout_initialize
|
89
|
+
attr_reader :timeout_async
|
90
|
+
attr_reader :timeout_sync
|
91
|
+
attr_reader :timeout_terminate
|
81
92
|
|
82
93
|
def self.thread_count
|
83
94
|
s = getenv('CLOUDI_API_INIT_THREAD_COUNT')
|
@@ -92,7 +103,12 @@ module CloudI
|
|
92
103
|
else
|
93
104
|
value.push(function)
|
94
105
|
end
|
95
|
-
send(term_to_binary([:subscribe, pattern]))
|
106
|
+
send(Erlang.term_to_binary([:subscribe, pattern]))
|
107
|
+
end
|
108
|
+
|
109
|
+
def subscribe_count(pattern)
|
110
|
+
send(Erlang.term_to_binary([:subscribe_count, pattern]))
|
111
|
+
return poll_request(false)
|
96
112
|
end
|
97
113
|
|
98
114
|
def unsubscribe(pattern)
|
@@ -103,60 +119,60 @@ module CloudI
|
|
103
119
|
if value.empty?
|
104
120
|
@callbacks.delete(key)
|
105
121
|
end
|
106
|
-
send(term_to_binary([:unsubscribe, pattern]))
|
122
|
+
send(Erlang.term_to_binary([:unsubscribe, pattern]))
|
107
123
|
end
|
108
124
|
|
109
125
|
def send_async(name, request,
|
110
126
|
timeout=nil, request_info=nil, priority=nil)
|
111
127
|
if timeout.nil?
|
112
|
-
timeout = @
|
128
|
+
timeout = @timeout_async
|
113
129
|
end
|
114
130
|
if request_info.nil?
|
115
131
|
request_info = ''
|
116
132
|
end
|
117
133
|
if priority.nil?
|
118
|
-
priority = @
|
134
|
+
priority = @priority_default
|
119
135
|
end
|
120
|
-
send(term_to_binary([:send_async, name,
|
121
|
-
|
122
|
-
|
123
|
-
|
136
|
+
send(Erlang.term_to_binary([:send_async, name,
|
137
|
+
OtpErlangBinary.new(request_info),
|
138
|
+
OtpErlangBinary.new(request),
|
139
|
+
timeout, priority]))
|
124
140
|
return poll_request(false)
|
125
141
|
end
|
126
142
|
|
127
143
|
def send_sync(name, request,
|
128
144
|
timeout=nil, request_info=nil, priority=nil)
|
129
145
|
if timeout.nil?
|
130
|
-
timeout = @
|
146
|
+
timeout = @timeout_sync
|
131
147
|
end
|
132
148
|
if request_info.nil?
|
133
149
|
request_info = ''
|
134
150
|
end
|
135
151
|
if priority.nil?
|
136
|
-
priority = @
|
152
|
+
priority = @priority_default
|
137
153
|
end
|
138
|
-
send(term_to_binary([:send_sync, name,
|
139
|
-
|
140
|
-
|
141
|
-
|
154
|
+
send(Erlang.term_to_binary([:send_sync, name,
|
155
|
+
OtpErlangBinary.new(request_info),
|
156
|
+
OtpErlangBinary.new(request),
|
157
|
+
timeout, priority]))
|
142
158
|
return poll_request(false)
|
143
159
|
end
|
144
160
|
|
145
161
|
def mcast_async(name, request,
|
146
162
|
timeout=nil, request_info=nil, priority=nil)
|
147
163
|
if timeout.nil?
|
148
|
-
timeout = @
|
164
|
+
timeout = @timeout_async
|
149
165
|
end
|
150
166
|
if request_info.nil?
|
151
167
|
request_info = ''
|
152
168
|
end
|
153
169
|
if priority.nil?
|
154
|
-
priority = @
|
170
|
+
priority = @priority_default
|
155
171
|
end
|
156
|
-
send(term_to_binary([:mcast_async, name,
|
157
|
-
|
158
|
-
|
159
|
-
|
172
|
+
send(Erlang.term_to_binary([:mcast_async, name,
|
173
|
+
OtpErlangBinary.new(request_info),
|
174
|
+
OtpErlangBinary.new(request),
|
175
|
+
timeout, priority]))
|
160
176
|
return poll_request(false)
|
161
177
|
end
|
162
178
|
|
@@ -174,7 +190,7 @@ module CloudI
|
|
174
190
|
|
175
191
|
def forward_async(name, request_info, request,
|
176
192
|
timeout, priority, trans_id, pid)
|
177
|
-
if @
|
193
|
+
if @request_timeout_adjustment
|
178
194
|
if timeout == @request_timeout
|
179
195
|
elapsed = [0,
|
180
196
|
((Time.now - @request_timer) * 1000.0).floor].max
|
@@ -185,17 +201,17 @@ module CloudI
|
|
185
201
|
end
|
186
202
|
end
|
187
203
|
end
|
188
|
-
send(term_to_binary([:forward_async, name,
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
204
|
+
send(Erlang.term_to_binary([:forward_async, name,
|
205
|
+
OtpErlangBinary.new(request_info),
|
206
|
+
OtpErlangBinary.new(request),
|
207
|
+
timeout, priority,
|
208
|
+
OtpErlangBinary.new(trans_id), pid]))
|
193
209
|
raise ForwardAsyncException.new()
|
194
210
|
end
|
195
211
|
|
196
212
|
def forward_sync(name, request_info, request,
|
197
213
|
timeout, priority, trans_id, pid)
|
198
|
-
if @
|
214
|
+
if @request_timeout_adjustment
|
199
215
|
if timeout == @request_timeout
|
200
216
|
elapsed = [0,
|
201
217
|
((Time.now - @request_timer) * 1000.0).floor].max
|
@@ -206,11 +222,11 @@ module CloudI
|
|
206
222
|
end
|
207
223
|
end
|
208
224
|
end
|
209
|
-
send(term_to_binary([:forward_sync, name,
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
225
|
+
send(Erlang.term_to_binary([:forward_sync, name,
|
226
|
+
OtpErlangBinary.new(request_info),
|
227
|
+
OtpErlangBinary.new(request),
|
228
|
+
timeout, priority,
|
229
|
+
OtpErlangBinary.new(trans_id), pid]))
|
214
230
|
raise ForwardSyncException.new()
|
215
231
|
end
|
216
232
|
|
@@ -228,7 +244,7 @@ module CloudI
|
|
228
244
|
|
229
245
|
def return_async(name, pattern, response_info, response,
|
230
246
|
timeout, trans_id, pid)
|
231
|
-
if @
|
247
|
+
if @request_timeout_adjustment
|
232
248
|
if timeout == @request_timeout
|
233
249
|
elapsed = [0,
|
234
250
|
((Time.now - @request_timer) * 1000.0).floor].max
|
@@ -241,17 +257,17 @@ module CloudI
|
|
241
257
|
end
|
242
258
|
end
|
243
259
|
end
|
244
|
-
send(term_to_binary([:return_async, name, pattern,
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
260
|
+
send(Erlang.term_to_binary([:return_async, name, pattern,
|
261
|
+
OtpErlangBinary.new(response_info),
|
262
|
+
OtpErlangBinary.new(response),
|
263
|
+
timeout,
|
264
|
+
OtpErlangBinary.new(trans_id), pid]))
|
249
265
|
raise ReturnAsyncException.new()
|
250
266
|
end
|
251
267
|
|
252
268
|
def return_sync(name, pattern, response_info, response,
|
253
269
|
timeout, trans_id, pid)
|
254
|
-
if @
|
270
|
+
if @request_timeout_adjustment
|
255
271
|
if timeout == @request_timeout
|
256
272
|
elapsed = [0,
|
257
273
|
((Time.now - @request_timer) * 1000.0).floor].max
|
@@ -264,58 +280,31 @@ module CloudI
|
|
264
280
|
end
|
265
281
|
end
|
266
282
|
end
|
267
|
-
send(term_to_binary([:return_sync, name, pattern,
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
283
|
+
send(Erlang.term_to_binary([:return_sync, name, pattern,
|
284
|
+
OtpErlangBinary.new(response_info),
|
285
|
+
OtpErlangBinary.new(response),
|
286
|
+
timeout,
|
287
|
+
OtpErlangBinary.new(trans_id), pid]))
|
272
288
|
raise ReturnSyncException.new()
|
273
289
|
end
|
274
290
|
|
275
291
|
def recv_async(timeout=nil, trans_id=nil, consume=true)
|
276
292
|
if timeout.nil?
|
277
|
-
timeout = @
|
293
|
+
timeout = @timeout_sync
|
278
294
|
end
|
279
295
|
if trans_id.nil?
|
280
296
|
trans_id = 0.chr * 16
|
281
297
|
end
|
282
|
-
send(term_to_binary([:recv_async, timeout,
|
283
|
-
|
298
|
+
send(Erlang.term_to_binary([:recv_async, timeout,
|
299
|
+
OtpErlangBinary.new(trans_id),
|
300
|
+
consume]))
|
284
301
|
return poll_request(false)
|
285
302
|
end
|
286
303
|
|
287
|
-
def process_index
|
288
|
-
return @processIndex
|
289
|
-
end
|
290
|
-
|
291
|
-
def process_count
|
292
|
-
return @processCount
|
293
|
-
end
|
294
|
-
|
295
|
-
def process_count_max
|
296
|
-
return @processCountMax
|
297
|
-
end
|
298
|
-
|
299
|
-
def process_count_min
|
300
|
-
return @processCountMin
|
301
|
-
end
|
302
|
-
|
303
|
-
def prefix
|
304
|
-
return @prefix
|
305
|
-
end
|
306
|
-
|
307
|
-
def timeout_async
|
308
|
-
return @timeoutAsync
|
309
|
-
end
|
310
|
-
|
311
|
-
def timeout_sync
|
312
|
-
return @timeoutSync
|
313
|
-
end
|
314
|
-
|
315
304
|
def callback(command, name, pattern, request_info, request,
|
316
305
|
timeout, priority, trans_id, pid)
|
317
306
|
request_time_start = nil
|
318
|
-
if @
|
307
|
+
if @request_timeout_adjustment
|
319
308
|
@request_timer = Time.now
|
320
309
|
@request_timeout = timeout
|
321
310
|
end
|
@@ -415,9 +404,48 @@ module CloudI
|
|
415
404
|
end
|
416
405
|
end
|
417
406
|
|
407
|
+
def handle_events(external, data, data_size, i, command=nil)
|
408
|
+
if command.nil?
|
409
|
+
if i > data_size
|
410
|
+
raise MessageDecodingException
|
411
|
+
end
|
412
|
+
j = 4
|
413
|
+
command = data[i, j].unpack('L')[0]
|
414
|
+
else
|
415
|
+
j = 4
|
416
|
+
end
|
417
|
+
loop do
|
418
|
+
case command
|
419
|
+
when MESSAGE_TERM
|
420
|
+
@terminate = true
|
421
|
+
if external
|
422
|
+
return false
|
423
|
+
else
|
424
|
+
raise TerminateException.new(@timeout_terminate)
|
425
|
+
end
|
426
|
+
when MESSAGE_REINIT
|
427
|
+
i += j; j = 4
|
428
|
+
@process_count = data[i, j].unpack('L')[0]
|
429
|
+
i += j
|
430
|
+
when MESSAGE_KEEPALIVE
|
431
|
+
send(Erlang.term_to_binary(:keepalive))
|
432
|
+
i += j
|
433
|
+
end
|
434
|
+
if i > data_size
|
435
|
+
raise MessageDecodingException
|
436
|
+
elsif i == data_size
|
437
|
+
return true
|
438
|
+
end
|
439
|
+
j = 4
|
440
|
+
command = data[i, j].unpack('L')[0]
|
441
|
+
end
|
442
|
+
end
|
443
|
+
|
418
444
|
def poll_request(external)
|
419
|
-
if
|
420
|
-
|
445
|
+
if @terminate
|
446
|
+
return nil
|
447
|
+
elsif external and not @initialization_complete
|
448
|
+
send(Erlang.term_to_binary(:polling))
|
421
449
|
@initialization_complete = true
|
422
450
|
end
|
423
451
|
|
@@ -433,110 +461,144 @@ module CloudI
|
|
433
461
|
end
|
434
462
|
|
435
463
|
data = recv('')
|
436
|
-
|
464
|
+
data_size = data.bytesize
|
465
|
+
if data_size == 0
|
437
466
|
return nil
|
438
467
|
end
|
468
|
+
i = 0; j = 4
|
439
469
|
|
440
470
|
loop do
|
441
|
-
i = 0; j = 4
|
442
471
|
command = data[i, j].unpack('L')[0]
|
443
472
|
case command
|
444
473
|
when MESSAGE_INIT
|
445
474
|
i += j; j = 4 + 4 + 4 + 4 + 4
|
446
475
|
tmp = data[i, j].unpack('LLLLL')
|
447
|
-
@
|
448
|
-
@
|
449
|
-
@
|
450
|
-
@
|
451
|
-
|
452
|
-
i += j; j =
|
453
|
-
tmp = data[i, j].unpack("Z#{
|
476
|
+
@process_index = tmp[0]
|
477
|
+
@process_count = tmp[1]
|
478
|
+
@process_count_max = tmp[2]
|
479
|
+
@process_count_min = tmp[3]
|
480
|
+
prefix_size = tmp[4]
|
481
|
+
i += j; j = prefix_size + 4 + 4 + 4 + 4 + 1 + 1
|
482
|
+
tmp = data[i, j].unpack("Z#{prefix_size}LLLLcC")
|
454
483
|
@prefix = tmp[0]
|
455
|
-
@
|
456
|
-
@
|
457
|
-
@
|
458
|
-
@
|
484
|
+
@timeout_initialize = tmp[1]
|
485
|
+
@timeout_async = tmp[2]
|
486
|
+
@timeout_sync = tmp[3]
|
487
|
+
@timeout_terminate = tmp[4]
|
488
|
+
@priority_default = tmp[5]
|
489
|
+
@request_timeout_adjustment = (tmp[6] != 0)
|
459
490
|
i += j
|
460
|
-
if i !=
|
461
|
-
|
491
|
+
if i != data_size
|
492
|
+
API.assert{external == false}
|
493
|
+
handle_events(external, data, data_size, i)
|
462
494
|
end
|
463
495
|
return
|
464
496
|
when MESSAGE_SEND_ASYNC, MESSAGE_SEND_SYNC
|
465
497
|
i += j; j = 4
|
466
|
-
|
467
|
-
i += j; j =
|
468
|
-
tmp = data[i, j].unpack("Z#{
|
498
|
+
name_size = data[i, j].unpack('L')[0]
|
499
|
+
i += j; j = name_size + 4
|
500
|
+
tmp = data[i, j].unpack("Z#{name_size}L")
|
469
501
|
name = tmp[0]
|
470
|
-
|
471
|
-
i += j; j =
|
472
|
-
tmp = data[i, j].unpack("Z#{
|
502
|
+
pattern_size = tmp[1]
|
503
|
+
i += j; j = pattern_size + 4
|
504
|
+
tmp = data[i, j].unpack("Z#{pattern_size}L")
|
473
505
|
pattern = tmp[0]
|
474
|
-
|
475
|
-
i += j; j =
|
476
|
-
tmp = data[i, j].unpack("a#{
|
506
|
+
request_info_size = tmp[1]
|
507
|
+
i += j; j = request_info_size + 1 + 4
|
508
|
+
tmp = data[i, j].unpack("a#{request_info_size}xL")
|
477
509
|
request_info = tmp[0]
|
478
|
-
|
479
|
-
i += j; j =
|
480
|
-
tmp = data[i, j].unpack("a#{
|
510
|
+
request_size = tmp[1]
|
511
|
+
i += j; j = request_size + 1 + 4 + 1 + 16 + 4
|
512
|
+
tmp = data[i, j].unpack("a#{request_size}xLca16L")
|
481
513
|
request = tmp[0]
|
482
514
|
timeout = tmp[1]
|
483
515
|
priority = tmp[2]
|
484
516
|
trans_id = tmp[3]
|
485
|
-
|
486
|
-
i += j; j =
|
487
|
-
pid = data[i, j].unpack("a#{
|
517
|
+
pid_size = tmp[4]
|
518
|
+
i += j; j = pid_size
|
519
|
+
pid = data[i, j].unpack("a#{pid_size}")[0]
|
488
520
|
i += j
|
489
|
-
if i !=
|
490
|
-
|
521
|
+
if i != data_size
|
522
|
+
API.assert{external == true}
|
523
|
+
if not handle_events(external, data, data_size, i)
|
524
|
+
return nil
|
525
|
+
end
|
491
526
|
end
|
492
527
|
data.clear()
|
493
528
|
callback(command, name, pattern, request_info, request,
|
494
|
-
timeout, priority, trans_id,
|
529
|
+
timeout, priority, trans_id,
|
530
|
+
Erlang.binary_to_term(pid))
|
495
531
|
when MESSAGE_RECV_ASYNC, MESSAGE_RETURN_SYNC
|
496
532
|
i += j; j = 4
|
497
|
-
|
498
|
-
i += j; j =
|
499
|
-
tmp = data[i, j].unpack("a#{
|
533
|
+
response_info_size = data[i, j].unpack('L')[0]
|
534
|
+
i += j; j = response_info_size + 1 + 4
|
535
|
+
tmp = data[i, j].unpack("a#{response_info_size}xL")
|
500
536
|
response_info = tmp[0]
|
501
|
-
|
502
|
-
i += j; j =
|
503
|
-
tmp = data[i, j].unpack("a#{
|
537
|
+
response_size = tmp[1]
|
538
|
+
i += j; j = response_size + 1 + 16
|
539
|
+
tmp = data[i, j].unpack("a#{response_size}xa16")
|
504
540
|
response = tmp[0]
|
505
541
|
trans_id = tmp[1]
|
506
542
|
i += j
|
507
|
-
if i !=
|
508
|
-
|
543
|
+
if i != data_size
|
544
|
+
API.assert{external == false}
|
545
|
+
handle_events(external, data, data_size, i)
|
509
546
|
end
|
510
547
|
return [response_info, response, trans_id]
|
511
548
|
when MESSAGE_RETURN_ASYNC
|
512
549
|
i += j; j = 16
|
513
550
|
trans_id = data[i, j].unpack('a16')[0]
|
514
551
|
i += j
|
515
|
-
if i !=
|
516
|
-
|
552
|
+
if i != data_size
|
553
|
+
API.assert{external == false}
|
554
|
+
handle_events(external, data, data_size, i)
|
517
555
|
end
|
518
556
|
return trans_id
|
519
557
|
when MESSAGE_RETURNS_ASYNC
|
520
558
|
i += j; j = 4
|
521
|
-
|
522
|
-
i += j; j = 16 *
|
523
|
-
|
559
|
+
trans_id_count = data[i, j].unpack('L')[0]
|
560
|
+
i += j; j = 16 * trans_id_count
|
561
|
+
trans_ids = data[i, j].unpack('a16' * trans_id_count)
|
524
562
|
i += j
|
525
|
-
if i !=
|
526
|
-
|
563
|
+
if i != data_size
|
564
|
+
API.assert{external == false}
|
565
|
+
handle_events(external, data, data_size, i)
|
527
566
|
end
|
528
|
-
return
|
529
|
-
when
|
530
|
-
|
567
|
+
return trans_ids
|
568
|
+
when MESSAGE_SUBSCRIBE_COUNT
|
569
|
+
i += j; j = 4
|
570
|
+
count = data[i, j].unpack('L')[0]
|
531
571
|
i += j
|
532
|
-
if i
|
572
|
+
if i != data_size
|
573
|
+
API.assert{external == false}
|
574
|
+
handle_events(external, data, data_size, i)
|
575
|
+
end
|
576
|
+
return count
|
577
|
+
when MESSAGE_TERM
|
578
|
+
if not handle_events(external, data, data_size, i, command)
|
579
|
+
return nil
|
580
|
+
end
|
581
|
+
API.assert{false}
|
582
|
+
when MESSAGE_REINIT
|
583
|
+
i += j; j = 4
|
584
|
+
@process_count = data[i, j].unpack('L')[0]
|
585
|
+
i += j; j = 4
|
586
|
+
if i == data_size
|
587
|
+
#
|
588
|
+
elsif i < data_size
|
589
|
+
next
|
590
|
+
else
|
533
591
|
raise MessageDecodingException
|
534
592
|
end
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
593
|
+
when MESSAGE_KEEPALIVE
|
594
|
+
send(Erlang.term_to_binary(:keepalive))
|
595
|
+
i += j; j = 4
|
596
|
+
if i == data_size
|
597
|
+
#
|
598
|
+
elsif i < data_size
|
599
|
+
next
|
600
|
+
else
|
601
|
+
raise MessageDecodingException
|
540
602
|
end
|
541
603
|
else
|
542
604
|
raise MessageDecodingException
|
@@ -554,9 +616,11 @@ module CloudI
|
|
554
616
|
end
|
555
617
|
|
556
618
|
data = recv(data)
|
557
|
-
|
619
|
+
data_size = data.bytesize
|
620
|
+
if data_size == 0
|
558
621
|
return nil
|
559
622
|
end
|
623
|
+
i = 0; j = 4
|
560
624
|
end
|
561
625
|
end
|
562
626
|
|
@@ -593,6 +657,7 @@ module CloudI
|
|
593
657
|
end
|
594
658
|
|
595
659
|
private :callback
|
660
|
+
private :handle_events
|
596
661
|
private :poll_request
|
597
662
|
private :binary_key_value_parse
|
598
663
|
private
|
@@ -631,14 +696,17 @@ module CloudI
|
|
631
696
|
data
|
632
697
|
end
|
633
698
|
|
634
|
-
MESSAGE_INIT
|
635
|
-
MESSAGE_SEND_ASYNC
|
636
|
-
MESSAGE_SEND_SYNC
|
637
|
-
MESSAGE_RECV_ASYNC
|
638
|
-
MESSAGE_RETURN_ASYNC
|
639
|
-
MESSAGE_RETURN_SYNC
|
640
|
-
MESSAGE_RETURNS_ASYNC
|
641
|
-
MESSAGE_KEEPALIVE
|
699
|
+
MESSAGE_INIT = 1
|
700
|
+
MESSAGE_SEND_ASYNC = 2
|
701
|
+
MESSAGE_SEND_SYNC = 3
|
702
|
+
MESSAGE_RECV_ASYNC = 4
|
703
|
+
MESSAGE_RETURN_ASYNC = 5
|
704
|
+
MESSAGE_RETURN_SYNC = 6
|
705
|
+
MESSAGE_RETURNS_ASYNC = 7
|
706
|
+
MESSAGE_KEEPALIVE = 8
|
707
|
+
MESSAGE_REINIT = 9
|
708
|
+
MESSAGE_SUBSCRIBE_COUNT = 10
|
709
|
+
MESSAGE_TERM = 11
|
642
710
|
|
643
711
|
NULL = 0
|
644
712
|
|
@@ -664,5 +732,12 @@ module CloudI
|
|
664
732
|
|
665
733
|
class MessageDecodingException < Exception
|
666
734
|
end
|
735
|
+
|
736
|
+
class TerminateException < Exception
|
737
|
+
def initialize(timeout)
|
738
|
+
@timeout = timeout
|
739
|
+
end
|
740
|
+
attr_reader :timeout
|
741
|
+
end
|
667
742
|
end
|
668
743
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -50,11 +50,11 @@ cert_chain:
|
|
50
50
|
-----END CERTIFICATE-----
|
51
51
|
|
52
52
|
'
|
53
|
-
date: 2014-
|
53
|
+
date: 2014-09-30 00:00:00.000000000 Z
|
54
54
|
dependencies:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: erlang_rb
|
57
|
-
requirement: &
|
57
|
+
requirement: &15927380 !ruby/object:Gem::Requirement
|
58
58
|
none: false
|
59
59
|
requirements:
|
60
60
|
- - ~>
|
@@ -62,13 +62,13 @@ dependencies:
|
|
62
62
|
version: '1.3'
|
63
63
|
- - ! '>='
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 1.3.
|
65
|
+
version: 1.3.3
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *15927380
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: erlang_rb
|
71
|
-
requirement: &
|
71
|
+
requirement: &15925360 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '1.3'
|
77
77
|
- - ! '>='
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: 1.3.
|
79
|
+
version: 1.3.3
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *15925360
|
83
83
|
description: Ruby CloudI API
|
84
84
|
email: mjtruog@gmail.com
|
85
85
|
executables: []
|
metadata.gz.sig
CHANGED
Binary file
|