cloudi 1.8.0 → 2.0.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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -2
- data/lib/cloudi.rb +68 -31
- metadata +11 -12
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0471a083e2e81711a27b2efdd1779820cb687f50ea9b1cc8019cbad439c16b30
|
4
|
+
data.tar.gz: aa4a82edf6d025917958595bbc69cee9a72bfb04e4cd2f435f3aa47513b5795c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47603319fafe80c8af0ad85bc7e0189663d43d488d72439647b63653dd481474b9d5ff0a21d3eb9d6ba42ac770efe80418e51e69a7673f372f3db5bab7924e98
|
7
|
+
data.tar.gz: 724f8075fee5e275fed0d317604907b0e67e2ff51bd5f0be1e07f513fe85a15ca407db64f1d4bdbf38550c1d9c22ba75562987848d932ba13b54872db8d018be
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
��}
|
2
|
-
�=� �v���� �s��Rl[@����P��J��p=(���e�n4�!�֘Y�ٙ�E�o�-|�ۛE�,�W�A�hIlӏ�����k��m��C,~- R�%bƻ<
|
1
|
+
?��S���0��X����g���t(Y5U:�c)�|!�tZ`����j$��Vx�Fe�N��"��EOcqy%i�f��q��ߝ��I��A�|���9�}�!<�r�O���qx�_ɃiV4n�ҭoP}��L�bSv-!$$�/H6|�����헙�YN;���b��y��m�G�d�Nn�Mq����|�����^j��Rh��(㫀4N?e?/2�۱����o�c�7��_�Ä<N�7��
|
data/lib/cloudi.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# MIT License
|
6
6
|
#
|
7
|
-
# Copyright (c) 2011-
|
7
|
+
# Copyright (c) 2011-2020 Michael Truog <mjtruog at protonmail dot com>
|
8
8
|
#
|
9
9
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
10
10
|
# copy of this software and associated documentation files (the "Software"),
|
@@ -31,6 +31,7 @@ $stdout.sync = true
|
|
31
31
|
$stderr.sync = true
|
32
32
|
|
33
33
|
require 'erlang'
|
34
|
+
require 'stringio'
|
34
35
|
|
35
36
|
module CloudI
|
36
37
|
class API
|
@@ -62,7 +63,7 @@ module CloudI
|
|
62
63
|
@terminate = false
|
63
64
|
@size = buffer_size_str.to_i
|
64
65
|
@callbacks = Hash.new
|
65
|
-
@timeout_terminate =
|
66
|
+
@timeout_terminate = 10 # TIMEOUT_TERMINATE_MIN
|
66
67
|
send(Erlang.term_to_binary(:init))
|
67
68
|
poll_request(nil, false)
|
68
69
|
end
|
@@ -253,6 +254,7 @@ module CloudI
|
|
253
254
|
function = function_queue.shift
|
254
255
|
function_queue.push(function)
|
255
256
|
end
|
257
|
+
return_null_response = false
|
256
258
|
case command
|
257
259
|
when MESSAGE_SEND_ASYNC
|
258
260
|
begin
|
@@ -272,29 +274,31 @@ module CloudI
|
|
272
274
|
if not response.kind_of?(String)
|
273
275
|
response = ''
|
274
276
|
end
|
275
|
-
rescue InvalidInputException => e
|
276
|
-
raise e
|
277
277
|
rescue MessageDecodingException => e
|
278
|
-
|
278
|
+
@terminate = true
|
279
|
+
return_null_response = true
|
279
280
|
rescue TerminateException => e
|
280
|
-
|
281
|
+
return_null_response = true
|
281
282
|
rescue ReturnAsyncException
|
282
283
|
return
|
283
|
-
rescue ForwardAsyncException
|
284
|
-
return
|
285
284
|
rescue ReturnSyncException => e
|
285
|
+
@terminate = true
|
286
286
|
$stderr.puts e.message
|
287
287
|
$stderr.puts e.backtrace
|
288
|
-
|
288
|
+
return
|
289
|
+
rescue ForwardAsyncException
|
289
290
|
return
|
290
291
|
rescue ForwardSyncException => e
|
292
|
+
@terminate = true
|
291
293
|
$stderr.puts e.message
|
292
294
|
$stderr.puts e.backtrace
|
293
|
-
API.assert{false}
|
294
295
|
return
|
295
296
|
rescue
|
297
|
+
return_null_response = true
|
296
298
|
$stderr.puts $!.message
|
297
299
|
$stderr.puts $!.backtrace
|
300
|
+
end
|
301
|
+
if return_null_response
|
298
302
|
response_info = ''
|
299
303
|
response = ''
|
300
304
|
end
|
@@ -321,29 +325,31 @@ module CloudI
|
|
321
325
|
if not response.kind_of?(String)
|
322
326
|
response = ''
|
323
327
|
end
|
324
|
-
rescue InvalidInputException => e
|
325
|
-
raise e
|
326
328
|
rescue MessageDecodingException => e
|
327
|
-
|
329
|
+
@terminate = true
|
330
|
+
return_null_response = true
|
328
331
|
rescue TerminateException => e
|
329
|
-
|
332
|
+
return_null_response = true
|
330
333
|
rescue ReturnSyncException
|
331
334
|
return
|
332
|
-
rescue ForwardSyncException
|
333
|
-
return
|
334
335
|
rescue ReturnAsyncException => e
|
336
|
+
@terminate = true
|
335
337
|
$stderr.puts e.message
|
336
338
|
$stderr.puts e.backtrace
|
337
|
-
|
339
|
+
return
|
340
|
+
rescue ForwardSyncException
|
338
341
|
return
|
339
342
|
rescue ForwardAsyncException => e
|
343
|
+
@terminate = true
|
340
344
|
$stderr.puts e.message
|
341
345
|
$stderr.puts e.backtrace
|
342
|
-
API.assert{false}
|
343
346
|
return
|
344
347
|
rescue
|
348
|
+
return_null_response = true
|
345
349
|
$stderr.puts $!.message
|
346
350
|
$stderr.puts $!.backtrace
|
351
|
+
end
|
352
|
+
if return_null_response
|
347
353
|
response_info = ''
|
348
354
|
response = ''
|
349
355
|
end
|
@@ -402,7 +408,11 @@ module CloudI
|
|
402
408
|
|
403
409
|
def poll_request(timeout, external)
|
404
410
|
if @terminate
|
405
|
-
|
411
|
+
if external
|
412
|
+
return false
|
413
|
+
else
|
414
|
+
raise TerminateException.new(@timeout_terminate)
|
415
|
+
end
|
406
416
|
elsif external and not @initialization_complete
|
407
417
|
send(Erlang.term_to_binary(:polling))
|
408
418
|
@initialization_complete = true
|
@@ -492,6 +502,9 @@ module CloudI
|
|
492
502
|
callback(command, name, pattern, request_info, request,
|
493
503
|
request_timeout, priority, trans_id,
|
494
504
|
Erlang.binary_to_term(pid))
|
505
|
+
if @terminate
|
506
|
+
return false
|
507
|
+
end
|
495
508
|
when MESSAGE_RECV_ASYNC, MESSAGE_RETURN_SYNC
|
496
509
|
i += j; j = 4
|
497
510
|
response_info_size = data[i, j].unpack('L')[0]
|
@@ -622,24 +635,47 @@ module CloudI
|
|
622
635
|
send(Erlang.term_to_binary([:shutdown, reason]))
|
623
636
|
end
|
624
637
|
|
625
|
-
def
|
626
|
-
|
627
|
-
|
628
|
-
(0...(
|
629
|
-
value =
|
638
|
+
def self.text_pairs_parse(text)
|
639
|
+
pairs = {}
|
640
|
+
text_segments = text.split(NULL.chr)
|
641
|
+
(0...(text_segments.length)).step(2).each do |i|
|
642
|
+
value = pairs[text_segments[i]]
|
630
643
|
if value == nil
|
631
|
-
|
644
|
+
pairs[text_segments[i]] = text_segments[i + 1]
|
632
645
|
elsif value.kind_of?(Array)
|
633
|
-
value <<
|
646
|
+
value << text_segments[i + 1]
|
647
|
+
else
|
648
|
+
pairs[text_segments[i]] = [value, text_segments[i + 1]]
|
649
|
+
end
|
650
|
+
end
|
651
|
+
return pairs
|
652
|
+
end
|
653
|
+
|
654
|
+
def self.text_pairs_new(pairs, response)
|
655
|
+
text_stream = StringIO.new
|
656
|
+
pairs.each do |key, values|
|
657
|
+
if values.kind_of?(String)
|
658
|
+
text_stream.write "#{key}\0#{values}\0"
|
634
659
|
else
|
635
|
-
|
660
|
+
values.each do |value|
|
661
|
+
text_stream.write "#{key}\0#{value}\0"
|
662
|
+
end
|
636
663
|
end
|
637
664
|
end
|
638
|
-
|
665
|
+
text = text_stream.string
|
666
|
+
if response and text == ''
|
667
|
+
return "\0"
|
668
|
+
else
|
669
|
+
return text
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
def self.info_key_value_parse(info)
|
674
|
+
return text_pairs_parse(info)
|
639
675
|
end
|
640
676
|
|
641
|
-
def
|
642
|
-
return
|
677
|
+
def self.info_key_value_new(pairs, response = true)
|
678
|
+
return text_pairs_new(pairs, response)
|
643
679
|
end
|
644
680
|
|
645
681
|
def self.assert
|
@@ -650,7 +686,8 @@ module CloudI
|
|
650
686
|
private :callback
|
651
687
|
private :handle_events
|
652
688
|
private :poll_request
|
653
|
-
|
689
|
+
private_class_method :text_pairs_parse
|
690
|
+
private_class_method :text_pairs_new
|
654
691
|
private
|
655
692
|
|
656
693
|
def send(data)
|
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:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Truog
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
KH+3FIhF8jYeRqq/8g4k6zsZZwRewPjObe3Wm4yEv0f0dxdQRuWcuE7s7z0Bss5J
|
31
31
|
YQYB6UQUREuP9rhSHKbAZd9CPR3XW+S7PkeQiWc8ceLFVsfK
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: erlang_rb
|
@@ -38,40 +38,40 @@ dependencies:
|
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '2.0'
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
44
|
+
version: 2.0.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
49
|
- - "~>"
|
50
50
|
- !ruby/object:Gem::Version
|
51
|
-
version: '
|
51
|
+
version: '2.0'
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: erlang_rb
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.0'
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
64
|
+
version: 2.0.0
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
69
|
- - "~>"
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: '
|
71
|
+
version: '2.0'
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
74
|
+
version: 2.0.0
|
75
75
|
description: Ruby CloudI API
|
76
76
|
email: mjtruog@protonmail.com
|
77
77
|
executables: []
|
@@ -100,8 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0'
|
102
102
|
requirements: []
|
103
|
-
|
104
|
-
rubygems_version: 2.6.11
|
103
|
+
rubygems_version: 3.1.2
|
105
104
|
signing_key:
|
106
105
|
specification_version: 4
|
107
106
|
summary: CloudI API
|
metadata.gz.sig
CHANGED
Binary file
|