elrpc 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7efab0c0a0e44323a1408e6dd439ce0f6c087aae
4
- data.tar.gz: a0ebb57366e5e40f414f65add6df27b543c3ffbb
3
+ metadata.gz: 48893e5e2a5847c1d753cd1c326a6077c194d9d4
4
+ data.tar.gz: 3322393f7a5c7c6e1dacc395fba4a3a22e906d90
5
5
  SHA512:
6
- metadata.gz: 6870c906155f3589af3add147590687b8265f8063140267a5d38284d440713194042073488bcf42bc32e63eff035431cb49cba5da24bac5ebbb8d7553ccca718
7
- data.tar.gz: 54da2936422b048e6e2d7c97b66ec77a0cf4b19624433f29941f138d4b0100329dae88cf7c5b33c47a37602b0f386acaa5d3b7a849b37d5ffe226fba0e2b4cba
6
+ metadata.gz: 88ad979dbed7ba14dd573db134784f7bfb76996187bebd5a6e94077f2e4575058baa45a36de6c26db01c2b946beebcd7d9261acfb18c5ba5baa6ce0613c9dd50
7
+ data.tar.gz: b59eae7fd5c180d6e41a07b3116c3456a4f8936c830e439594070e49819558e693ab7566e7844b15ceca1b84618d6227916482fadc829d2d814d2384dbb64c3c
data/lib/elrpc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Elrpc
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/elrpc.rb CHANGED
@@ -5,7 +5,7 @@ require "socket"
5
5
  require "thread"
6
6
  require "monitor"
7
7
  require "logger"
8
- require "open3"
8
+ require "timeout"
9
9
 
10
10
  require "elparser"
11
11
 
@@ -55,8 +55,8 @@ module Elrpc
55
55
  return client
56
56
  end
57
57
 
58
- def self.start_process(cmd)
59
- svr = Service.new(cmd)
58
+ def self.start_process(cmd, port = nil)
59
+ svr = Service.new(cmd, port)
60
60
  svr.start
61
61
  return svr
62
62
  end
@@ -67,36 +67,46 @@ module Elrpc
67
67
  attr :output
68
68
 
69
69
  # cmd = ["ruby", "_call.rb"]
70
- def initialize(cmd)
70
+ def initialize(cmd, port)
71
71
  @cmd = cmd
72
+ @port = port
72
73
  end
73
74
 
74
75
  def _start_logger
75
76
  return Thread.start do
76
- stdout = @io3[1]
77
- stderr = @io3[2]
78
77
  loop do
79
- IO.select([stdout, stderr]).flatten.compact.each do |io|
80
- io.each do |line|
81
- next if line.nil? || line.empty?
82
- @logger.puts(line) if @logger
83
- end
84
- end
85
- break if stdout.eof? && stderr.eof?
78
+ ret = @io.readline
79
+ break if ret.nil?
80
+ @logger.puts(ret) if @logger
86
81
  end
87
82
  end
88
83
  end
89
84
 
90
85
  def start
91
- @io3 = Open3.popen3(*@cmd) # stdin, stdout, stderr, wait_thr
92
- @port = @io3[1].readline.to_i
93
- @io3[0].close
86
+ @io = IO.popen(@cmd)
87
+ if port.nil?
88
+ @port = @io.readline.to_i
89
+ end
94
90
  @output = nil
95
91
  @thread = _start_logger
92
+ # wait for port
93
+ timeout(4) do
94
+ loop do
95
+ begin
96
+ socket = TCPSocket.open("127.0.0.1", @port)
97
+ socket.close
98
+ #puts("Peer port is OK.")
99
+ break
100
+ rescue => e
101
+ #puts("Peer port is not opened. Try next time...")
102
+ sleep(0.2)
103
+ end
104
+ end
105
+ end
96
106
  @client = Elrpc.start_client(@port)
97
107
  return self
98
108
  end
99
-
109
+
100
110
  def register_method(method)
101
111
  @client.register_method(method)
102
112
  end
@@ -123,13 +133,6 @@ module Elrpc
123
133
 
124
134
  def stop
125
135
  @client.stop
126
- @io3[1].close
127
- @io3[2].close
128
- end
129
-
130
- def stop_force
131
- stop
132
- @io3[3].kill
133
136
  end
134
137
 
135
138
  end
data/test/test-epc.rb CHANGED
@@ -32,15 +32,15 @@ class TestEPC < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  test "Start server process" do
35
- sleep(1)
36
35
  sv = nil
37
36
  begin
38
- timeout(1) do
39
- sv = Elrpc.start_process(["ruby",base("_echo.rb")])
37
+ timeout(5) do
38
+ sv = Elrpc.start_process(["ruby",base("_echo.rb")], 8888)
40
39
  sv.stop
41
40
  assert_true(true)
42
41
  end
43
42
  rescue => e
43
+ puts e,e.backtrace
44
44
  assert_true(false)
45
45
  sv.stop_force if sv
46
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - SAKURAI Masashi