cloudi 1.7.2 → 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 -3
- data/README.markdown +2 -2
- data/lib/cloudi.rb +75 -31
- metadata +32 -33
- 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,3 +1 @@
|
|
1
|
-
�
|
2
|
-
���P>!�11a��������u�$u��D[�+Qy�|�q�k��gτ�z��4��E��[�0�|�<R���N�yl"���9̬� �&�I-���D��x�Qr��R��>?��b%T��}�a��R��~j�i;���
|
3
|
-
�Ǯ�!w�T�#��Ɉ~OD5nwc�Q����|��4-�2~�G�h�:�C��
|
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/README.markdown
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
[](https://travis-ci.org/CloudI/cloudi_api_ruby)
|
5
5
|
[](https://rubygems.org/gems/cloudi)
|
6
6
|
|
7
|
-
Ruby [CloudI API](
|
7
|
+
Ruby [CloudI API](https://cloudi.org/api.html#1_Intro)
|
8
8
|
|
9
9
|
Available as a [Ruby gem at `https://rubygems.org/gems/cloudi`](https://rubygems.org/gems/cloudi).
|
10
10
|
|
11
11
|
Author
|
12
12
|
------
|
13
13
|
|
14
|
-
Michael Truog (mjtruog
|
14
|
+
Michael Truog (mjtruog at protonmail dot com)
|
15
15
|
|
16
16
|
License
|
17
17
|
-------
|
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]
|
@@ -615,24 +628,54 @@ module CloudI
|
|
615
628
|
return poll_request(timeout, true)
|
616
629
|
end
|
617
630
|
|
618
|
-
def
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
631
|
+
def shutdown(reason=nil)
|
632
|
+
if reason.nil?
|
633
|
+
reason = ''
|
634
|
+
end
|
635
|
+
send(Erlang.term_to_binary([:shutdown, reason]))
|
636
|
+
end
|
637
|
+
|
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]]
|
623
643
|
if value == nil
|
624
|
-
|
644
|
+
pairs[text_segments[i]] = text_segments[i + 1]
|
625
645
|
elsif value.kind_of?(Array)
|
626
|
-
value <<
|
646
|
+
value << text_segments[i + 1]
|
627
647
|
else
|
628
|
-
|
648
|
+
pairs[text_segments[i]] = [value, text_segments[i + 1]]
|
629
649
|
end
|
630
650
|
end
|
631
|
-
return
|
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"
|
659
|
+
else
|
660
|
+
values.each do |value|
|
661
|
+
text_stream.write "#{key}\0#{value}\0"
|
662
|
+
end
|
663
|
+
end
|
664
|
+
end
|
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)
|
632
675
|
end
|
633
676
|
|
634
|
-
def
|
635
|
-
return
|
677
|
+
def self.info_key_value_new(pairs, response = true)
|
678
|
+
return text_pairs_new(pairs, response)
|
636
679
|
end
|
637
680
|
|
638
681
|
def self.assert
|
@@ -643,7 +686,8 @@ module CloudI
|
|
643
686
|
private :callback
|
644
687
|
private :handle_events
|
645
688
|
private :poll_request
|
646
|
-
|
689
|
+
private_class_method :text_pairs_parse
|
690
|
+
private_class_method :text_pairs_new
|
647
691
|
private
|
648
692
|
|
649
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
|
@@ -10,27 +10,27 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
+
|
31
|
-
|
13
|
+
MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRAwDgYDVQQDDAdtanRy
|
14
|
+
dW9nMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFpbDETMBEGCgmSJomT8ixkARkW
|
15
|
+
A2NvbTAeFw0xOTExMjkwMjM1MzJaFw0yMDExMjgwMjM1MzJaMEMxEDAOBgNVBAMM
|
16
|
+
B21qdHJ1b2cxGjAYBgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPy
|
17
|
+
LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5Ar67eHx
|
18
|
+
R/cmFgsj58SkbsqEQWZOQ5GNO25IKuwjGHqznJXszXM1NW0YFLjgXjsXVdTXPeIC
|
19
|
+
CbkfoR8Yc1CEI6FYOWqhO0JqpPfYzt0s27o3Ua2x8j6n+31iRkbArIX2IVEjvBNd
|
20
|
+
UiTg6mG4Hc3KLqrBRDxZ+uyzqH/FEGPi5Ggak/E5xKwSdPWBPqDYKcze+suXxYO7
|
21
|
+
u38NwloGxpatQGgHgNGf83RfWDPaiYHGdPAsvUDzRFauxcG8sYRbmohc0TmE5+TQ
|
22
|
+
KMviZJNaNOaQkW1/twRQpo9PEv8bxEzEXT+tNOMEHrXgKv4+xEZYBM7D1FdP8gKj
|
23
|
+
wMXN22ZkLWzP8wIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
24
|
+
HQ4EFgQUT8+9UATmehNm5Lg1aBx8HLK7MZwwIQYDVR0RBBowGIEWbWp0cnVvZ0Bw
|
25
|
+
cm90b25tYWlsLmNvbTAhBgNVHRIEGjAYgRZtanRydW9nQHByb3Rvbm1haWwuY29t
|
26
|
+
MA0GCSqGSIb3DQEBBQUAA4IBAQANj/kudiIbxJaurULxhML4palEaqIeWCw24bxj
|
27
|
+
X72RvO4Ti6DDKpeccK0QF26tZCOw4ngxPPY0w1Zzq96iYMVPlKVBYVDCtjIkFNDt
|
28
|
+
Q/0hupNd8lLloTlIJ7jzHohfPtzUjsdC0d0cwXZLkjxhw67N7QPDxsCEa+jiHaWd
|
29
|
+
i+DxiISAPKf9ugw5kej0v2j15juXiK5pwKIDDGAFfv3WAFbJXleLoqdM87rbC/vq
|
30
|
+
KH+3FIhF8jYeRqq/8g4k6zsZZwRewPjObe3Wm4yEv0f0dxdQRuWcuE7s7z0Bss5J
|
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,42 +38,42 @@ 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
|
-
email: mjtruog@
|
76
|
+
email: mjtruog@protonmail.com
|
77
77
|
executables: []
|
78
78
|
extensions: []
|
79
79
|
extra_rdoc_files:
|
@@ -81,7 +81,7 @@ extra_rdoc_files:
|
|
81
81
|
files:
|
82
82
|
- README.markdown
|
83
83
|
- lib/cloudi.rb
|
84
|
-
homepage:
|
84
|
+
homepage: https://cloudi.org
|
85
85
|
licenses:
|
86
86
|
- MIT
|
87
87
|
metadata: {}
|
@@ -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
|