elrpc 0.0.3 → 0.0.4

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
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