cloudi 1.7.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 916554780735fd65981d4280ba0c3cfddfa36324
4
- data.tar.gz: 69d7a32a85c80fc720618db3f4913191c0950dd4
2
+ SHA256:
3
+ metadata.gz: 0471a083e2e81711a27b2efdd1779820cb687f50ea9b1cc8019cbad439c16b30
4
+ data.tar.gz: aa4a82edf6d025917958595bbc69cee9a72bfb04e4cd2f435f3aa47513b5795c
5
5
  SHA512:
6
- metadata.gz: 7a31931154e385f0f018d25bdf44a09e911fa52db3f34cbcb6e19539188ab704f4a337e124f8fb51c4378523c709d3f1846ff116cef82251a115c079c91ab1e0
7
- data.tar.gz: 9ec7578b5581a491c7e930aa64c4c8fae3703d781acaf64c79574f759acd67b24deac2cf9084fac2b027ba84edc4573f30beda3a5f39f8223a607d9febb45719
6
+ metadata.gz: 47603319fafe80c8af0ad85bc7e0189663d43d488d72439647b63653dd481474b9d5ff0a21d3eb9d6ba42ac770efe80418e51e69a7673f372f3db5bab7924e98
7
+ data.tar.gz: 724f8075fee5e275fed0d317604907b0e67e2ff51bd5f0be1e07f513fe85a15ca407db64f1d4bdbf38550c1d9c22ba75562987848d932ba13b54872db8d018be
Binary file
data.tar.gz.sig CHANGED
@@ -1,3 +1 @@
1
- Zga2ϕ)5�%d�g['�^�~��鞏
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�#��Ɉ~OD5 nwc�Q����|��4-�2~�G�h�:�C��
1
+ ?��S���0��X����g���t(Y5U:�c)�|!�tZ`����j$��VxFeN��"��EOcqy%i�f��q��ߝ��I��A�|���9�}�!<�rO���qx�_ɃiV4n�ҭoP}��L�bSv-!$$�/H6|�����헙�YN;���b��y��m�G�d�Nn�Mq����|�����^j��Rh��(㫀4N?e?/2�۱� ���o�c �7��_�Ä<N�7��
@@ -4,14 +4,14 @@
4
4
  [![Build Status](https://travis-ci.org/CloudI/cloudi_api_ruby.png)](https://travis-ci.org/CloudI/cloudi_api_ruby)
5
5
  [![Gem Package Version](https://img.shields.io/gem/v/cloudi.svg?maxAge=2592000)](https://rubygems.org/gems/cloudi)
6
6
 
7
- Ruby [CloudI API](http://cloudi.org/api.html#1_Intro)
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 [at] gmail (dot) com)
14
+ Michael Truog (mjtruog at protonmail dot com)
15
15
 
16
16
  License
17
17
  -------
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # MIT License
6
6
  #
7
- # Copyright (c) 2011-2017 Michael Truog <mjtruog at gmail dot com>
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 = 1000 # TIMEOUT_TERMINATE_MIN
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
- raise e
278
+ @terminate = true
279
+ return_null_response = true
279
280
  rescue TerminateException => e
280
- raise e
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
- API.assert{false}
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
- raise e
329
+ @terminate = true
330
+ return_null_response = true
328
331
  rescue TerminateException => e
329
- raise e
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
- API.assert{false}
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
- return false
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 text_key_value_parse(text)
619
- result = {}
620
- data = text.split(NULL.chr)
621
- (0...(data.length)).step(2).each do |i|
622
- value = result[data[i]]
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
- result[data[i]] = data[i + 1]
644
+ pairs[text_segments[i]] = text_segments[i + 1]
625
645
  elsif value.kind_of?(Array)
626
- value << data[i + 1]
646
+ value << text_segments[i + 1]
627
647
  else
628
- result[data[i]] = [value, data[i + 1]]
648
+ pairs[text_segments[i]] = [value, text_segments[i + 1]]
629
649
  end
630
650
  end
631
- return result
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 info_key_value_parse(message_info)
635
- return text_key_value_parse(message_info)
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
- private :text_key_value_parse
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: 1.7.2
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
- MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MRAwDgYDVQQDDAdtanRy
14
- dW9nMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
15
- HhcNMTcwOTEzMDYwMzAwWhcNMTgwOTEzMDYwMzAwWjA+MRAwDgYDVQQDDAdtanRy
16
- dW9nMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
17
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPlZFk7xAzMnUiNr/uHQV1
18
- xPPNZmqevvZgfY9SMS2C7c4kGTNBePRvmr3ihTW8yFTEXNRdCO3Ibm9zp7YFmlzz
19
- l7lyxHnEsrmPDmb5Ry+gIfrJ2M7lHqhbtvk3+5n5VB4npxEwXX3rsFWixO/8IOdX
20
- s9fuALCwdRbWwSBSgp+8SGHIl16G7iTxD7moHNsqW4i8ryyRr05jnhxJBSCcZShE
21
- Oa//izbIxWRvBk2Ibn/YlwZ2SrJXJ/DWxFkeXOcEFRQYy0vTn577GK0f4NTzoab5
22
- G5FKKk0oMtl5W+kaF6+qd7XkotSMCC4jG9dU17G9HkbHfjPKS4mkbMnlYIXlN5ZJ
23
- AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSkVYwB
24
- WjkE89b0x4Kq7W1UH82QODAcBgNVHREEFTATgRFtanRydW9nQGdtYWlsLmNvbTAc
25
- BgNVHRIEFTATgRFtanRydW9nQGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEA
26
- YO8ZXcsUY/3m6/JFCTqL9qL2wR4zfcYwo/uYDo2S7FR/EGsy1M+qLJB8V13AR2Li
27
- d/2mLm+SnhAgR32fMOaM58pbyFhlGaaEIs11xYywwbEbVe3eRxunsaJBcJxYeRZ+
28
- V+c3ebJejEGUNJ4dRSB6WvWr9zl7FozsWBNSYJoWDMfkC2B2zHo08va5DRSActEn
29
- 27W/V+TnP3ONYvcoDcOr7sNOhNISlpgB5kDcl7stP85hm99IVK7vZi8t2jX/8GTT
30
- +H4JAL4xk2aIYYf48338kxyZ8y9BNgp8cGbMEDtRSCgJnYk820Yt/fhM2DZtCbBL
31
- tOEdFrZvpA23/sCoGvunHw==
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: 2017-09-12 00:00:00.000000000 Z
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: '1.7'
41
+ version: '2.0'
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 1.7.2
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: '1.7'
51
+ version: '2.0'
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.7.2
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: '1.7'
61
+ version: '2.0'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 1.7.2
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: '1.7'
71
+ version: '2.0'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 1.7.2
74
+ version: 2.0.0
75
75
  description: Ruby CloudI API
76
- email: mjtruog@gmail.com
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: http://cloudi.org
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
- rubyforge_project:
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