cloudi 1.8.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +1 -2
  4. data/lib/cloudi.rb +68 -31
  5. metadata +11 -12
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 59b71b8a2fa7b91fdb4821fdfc37b81d80b042d1
4
- data.tar.gz: 78ed6318f5d76447519cef2d738717dcb34002d4
2
+ SHA256:
3
+ metadata.gz: 0471a083e2e81711a27b2efdd1779820cb687f50ea9b1cc8019cbad439c16b30
4
+ data.tar.gz: aa4a82edf6d025917958595bbc69cee9a72bfb04e4cd2f435f3aa47513b5795c
5
5
  SHA512:
6
- metadata.gz: 9516794ea7bd534e8f23438d1b5fcc4a508b710e3d27c73798940bb4c73600278fabd0ca3053fe1b8071da5fbeb569b420024fb3768e49af364b96d8e814f0b6
7
- data.tar.gz: 4e5a665ee7997d60291f1357a2257dad6c6e19970a483fe560190dd4e5f1784e7eea3d5325d6e8cb255525dd64a661d76cec2731f366d84417f45ffb7b3623ea
6
+ metadata.gz: 47603319fafe80c8af0ad85bc7e0189663d43d488d72439647b63653dd481474b9d5ff0a21d3eb9d6ba42ac770efe80418e51e69a7673f372f3db5bab7924e98
7
+ data.tar.gz: 724f8075fee5e275fed0d317604907b0e67e2ff51bd5f0be1e07f513fe85a15ca407db64f1d4bdbf38550c1d9c22ba75562987848d932ba13b54872db8d018be
Binary file
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- ��}�v[�����C�&�$YI}�N4���qp^143
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}��LbSv-!$$�/H6|�����헙�YN;���b��y��mGdNn�Mq����|�����^j��Rh��(㫀4N?e?/2�۱� ���o�c �7��_�Ä<N�7��
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # MIT License
6
6
  #
7
- # Copyright (c) 2011-2019 Michael Truog <mjtruog at protonmail 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]
@@ -622,24 +635,47 @@ module CloudI
622
635
  send(Erlang.term_to_binary([:shutdown, reason]))
623
636
  end
624
637
 
625
- def text_key_value_parse(text)
626
- result = {}
627
- data = text.split(NULL.chr)
628
- (0...(data.length)).step(2).each do |i|
629
- value = result[data[i]]
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
- result[data[i]] = data[i + 1]
644
+ pairs[text_segments[i]] = text_segments[i + 1]
632
645
  elsif value.kind_of?(Array)
633
- value << data[i + 1]
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
- result[data[i]] = [value, data[i + 1]]
660
+ values.each do |value|
661
+ text_stream.write "#{key}\0#{value}\0"
662
+ end
636
663
  end
637
664
  end
638
- return result
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 info_key_value_parse(message_info)
642
- return text_key_value_parse(message_info)
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
- private :text_key_value_parse
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: 1.8.0
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: 2019-11-28 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,40 +38,40 @@ dependencies:
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.8'
41
+ version: '2.0'
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 1.8.0
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.8'
51
+ version: '2.0'
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.8.0
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.8'
61
+ version: '2.0'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 1.8.0
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.8'
71
+ version: '2.0'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 1.8.0
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
- 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