mono_talk 0.0.1 → 0.0.2
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 +4 -4
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/lib/module/client.rb +49 -0
- data/lib/module/consts.rb +12 -0
- data/lib/module/module.rb +24 -0
- data/lib/module/server.rb +60 -0
- data/lib/mono_talk/version.rb +1 -1
- data/lib/mono_talk.rb +2 -0
- data/mono_talk/config.rb +9 -0
- data/spec/mono_talk_spec.rb +26 -0
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1b7bf6d190b8fbf1b502b4863292ccaa162ee56
|
4
|
+
data.tar.gz: 420a34cf26a72e581bb9996a91e25223b2073d74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bd9987a400e6eda030160c1f013ddeb4399e642c1296230c67bc7bb283d859940ae36b65bc40326a093719960ef14d4e69758f332c603a038ac88dd7821bef9
|
7
|
+
data.tar.gz: 9fa7442e14c48e207d1a877579a5efd3a763e8d952a621d3350a0b381f2693c2f261e0132dda6cdf527f0e01c3e0895bb95c0db639f33daa1d31853757066731
|
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "module/module"
|
2
|
+
require './mono_talk/config.rb'
|
3
|
+
|
4
|
+
module MonoTalk
|
5
|
+
class Client
|
6
|
+
@@retry = 5
|
7
|
+
|
8
|
+
def initialize(servicename)
|
9
|
+
@io = STDERR
|
10
|
+
servicename = servicename.to_sym
|
11
|
+
@host = Mono::check_local(Mono::HOST[servicename])
|
12
|
+
@port = Mono::PORT[servicename]
|
13
|
+
@status = :close
|
14
|
+
|
15
|
+
@io.puts "Connect to #{@host}:#{@port}"
|
16
|
+
|
17
|
+
(@@retry+1).times do |index|
|
18
|
+
begin
|
19
|
+
open(@host,@port)
|
20
|
+
break
|
21
|
+
rescue
|
22
|
+
if index > @@retry
|
23
|
+
raise "Connection failed."
|
24
|
+
end
|
25
|
+
@io.puts "Connection failed, retrying connect to server... [#{index}]"
|
26
|
+
sleep 1
|
27
|
+
end
|
28
|
+
end
|
29
|
+
@io.puts "Connection successful."
|
30
|
+
end
|
31
|
+
|
32
|
+
def open(host=@host,port=@port)
|
33
|
+
if @status == :close
|
34
|
+
@client = TCPSocket.open(host, port)
|
35
|
+
@status = :open
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def write(command_hash)
|
40
|
+
open()
|
41
|
+
@client.write(JSON.generate(command_hash)+"\n")
|
42
|
+
@io.puts ret = @client.gets.gsub("$n","\n")
|
43
|
+
@client.close
|
44
|
+
@status = :close
|
45
|
+
@io.puts 'Connection closed.'
|
46
|
+
return ret
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
$LOAD_PATH.unshift File.expand_path('lib')
|
3
|
+
|
4
|
+
require 'json'
|
5
|
+
require "socket"
|
6
|
+
require 'module/consts'
|
7
|
+
|
8
|
+
#Server / Client共通の処理・インターフェイスを定義する
|
9
|
+
module Mono
|
10
|
+
module Module
|
11
|
+
@@local_ip = nil
|
12
|
+
def define_local(ip)
|
13
|
+
@@local_ip = ip
|
14
|
+
end
|
15
|
+
|
16
|
+
def check_local(ip)
|
17
|
+
return ip unless @@local_ip
|
18
|
+
return "127.0.0.1" if ip == @@local_ip
|
19
|
+
return ip
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
extend Module
|
24
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'color_print'
|
2
|
+
require './mono_talk/config'
|
3
|
+
|
4
|
+
module MonoTalk
|
5
|
+
class Server
|
6
|
+
@routine = Hash.new
|
7
|
+
|
8
|
+
def initialize(servicename,routine)
|
9
|
+
@io = STDERR
|
10
|
+
@servicename = servicename.to_sym
|
11
|
+
@routine = routine
|
12
|
+
|
13
|
+
@io.puts Color.cyan "Command List"
|
14
|
+
@routine.each do |key,value|
|
15
|
+
@io.puts "#{key} -> #{value}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def accept
|
20
|
+
@server = TCPServer.open(Mono::PORT[@servicename])
|
21
|
+
@io.puts 'Acception start, waiting for data...'
|
22
|
+
@sock = @server.accept
|
23
|
+
@server.close
|
24
|
+
begin
|
25
|
+
hash = JSON.parse @sock.gets
|
26
|
+
@io.puts hash
|
27
|
+
@sock.write routing(hash)
|
28
|
+
rescue => e
|
29
|
+
@io.puts Color.red 'GIVE UP! SOMETHING BAD HAPPEN!'
|
30
|
+
@io.puts Color.yellow hash
|
31
|
+
@io.puts Color.magenta e
|
32
|
+
ensure
|
33
|
+
@sock.close
|
34
|
+
@io.puts 'Socket was closed.'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test(hash)
|
39
|
+
@io.puts Color.yellow "Starting test..."
|
40
|
+
@server = TCPServer.open(Mono::PORT[@servicename])
|
41
|
+
STDERR.puts 'Acception start, waiting for data...'
|
42
|
+
@server.close
|
43
|
+
@io.puts hash
|
44
|
+
ret = routing(hash)
|
45
|
+
@io.puts ret
|
46
|
+
@io.puts 'Test was closed.'
|
47
|
+
return ret
|
48
|
+
end
|
49
|
+
|
50
|
+
def routing(hash)
|
51
|
+
return "Undefined command, ABORT -> #{hash['command']}" unless @routine[hash['command']]
|
52
|
+
return @routine[hash['command']].call(hash['params'])
|
53
|
+
end
|
54
|
+
|
55
|
+
def close
|
56
|
+
@server.close
|
57
|
+
@io.puts 'Server closed.'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/mono_talk/version.rb
CHANGED
data/lib/mono_talk.rb
CHANGED
data/mono_talk/config.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('./lib')
|
2
|
+
require 'module/server'
|
3
|
+
require 'module/client'
|
4
|
+
require 'module/consts'
|
5
|
+
require 'mono_talk/version'
|
6
|
+
|
7
|
+
server = MonoTalk::Server.new(:test,MonoTalk::SAMPLE_ROUTINE)
|
8
|
+
|
9
|
+
describe MonoTalk do
|
10
|
+
it 'has a version number' do
|
11
|
+
expect(MonoTalk::VERSION).not_to be nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should be "Test succeed."' do
|
15
|
+
expect(server.test({"command" => "TEST"}) == "Test succeed.").not_to be false
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should be run expectedly.' do
|
19
|
+
client = nil
|
20
|
+
t = Thread.new do
|
21
|
+
client = MonoTalk::Client.new(:test)
|
22
|
+
client.write({"command"=>"TEST"})
|
23
|
+
end
|
24
|
+
server.accept
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mono_talk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tatumaki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -46,13 +46,21 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- ".gitignore"
|
49
|
+
- ".rspec"
|
50
|
+
- ".travis.yml"
|
49
51
|
- Gemfile
|
50
52
|
- LICENSE.txt
|
51
53
|
- README.md
|
52
54
|
- Rakefile
|
55
|
+
- lib/module/client.rb
|
56
|
+
- lib/module/consts.rb
|
57
|
+
- lib/module/module.rb
|
58
|
+
- lib/module/server.rb
|
53
59
|
- lib/mono_talk.rb
|
54
60
|
- lib/mono_talk/version.rb
|
55
61
|
- mono_talk.gemspec
|
62
|
+
- mono_talk/config.rb
|
63
|
+
- spec/mono_talk_spec.rb
|
56
64
|
homepage: ''
|
57
65
|
licenses:
|
58
66
|
- MIT
|
@@ -77,4 +85,5 @@ rubygems_version: 2.3.0
|
|
77
85
|
signing_key:
|
78
86
|
specification_version: 4
|
79
87
|
summary: Mono talk the simplest TCP conversation tool.
|
80
|
-
test_files:
|
88
|
+
test_files:
|
89
|
+
- spec/mono_talk_spec.rb
|