miu 0.2.1 → 0.2.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/lib/miu/command.rb +2 -9
- data/lib/miu/publisher.rb +29 -1
- data/lib/miu/subscriber.rb +56 -1
- data/lib/miu/version.rb +1 -1
- data/spec/miu/command_spec.rb +0 -1
- data/spec/miu/publisher_spec.rb +16 -0
- data/spec/miu/subscriber_spec.rb +25 -0
- data/spec/support/socket.rb +0 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58c2dddc2ca86a827f04b870dcee1bea659bae1d
|
4
|
+
data.tar.gz: a9a44a16e4c1bd40ec58ad638777152a2914d4c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df03bea1e55a265700af27b46a1917de3bf2ac62640a4434269d8c9ac1d34ac89a3b39241ee8f10aea5431c17638fc2a5920aa2d3007c4df065b9afdddd339a3
|
7
|
+
data.tar.gz: bd9d1f074c1acf7a79575ef4cd4555bd727ff30c2b031568ace6d77b5563fdcd79df8a30450a05d63551f7840461c355604970c6ebb6f62b1362af0bc46f0531
|
data/lib/miu/command.rb
CHANGED
@@ -22,24 +22,17 @@ module Miu
|
|
22
22
|
super task, namespace, subcommand || options.fetch(:subcommand, true)
|
23
23
|
end
|
24
24
|
|
25
|
-
def add_miu_pub_options(
|
26
|
-
tag = ['miu', 'input', name].select { |s| s && !s.empty? }.join('.') + '.'
|
25
|
+
def add_miu_pub_options(tag)
|
27
26
|
option 'pub-host', :type => :string, :default => '127.0.0.1', :desc => 'miu pub host'
|
28
27
|
option 'pub-port', :type => :numeric, :default => Miu.default_sub_port, :desc => 'miu pub port'
|
29
28
|
option 'pub-tag', :type => :string, :default => tag, :desc => 'miu pub tag'
|
30
29
|
end
|
31
30
|
|
32
|
-
def add_miu_sub_options(
|
33
|
-
tag = ['miu', 'output', name].select { |s| s && !s.empty? }.join('.') + '.'
|
31
|
+
def add_miu_sub_options(tag)
|
34
32
|
option 'sub-host', :type => :string, :default => '127.0.0.1', :desc => 'miu sub host'
|
35
33
|
option 'sub-port', :type => :numeric, :default => Miu.default_pub_port, :desc => 'miu sub port'
|
36
34
|
option 'sub-tag', :type => :string, :default => tag, :desc => 'miu sub tag'
|
37
35
|
end
|
38
|
-
|
39
|
-
def add_miu_pub_sub_options(name)
|
40
|
-
add_miu_pub_options name
|
41
|
-
add_miu_sub_options name
|
42
|
-
end
|
43
36
|
end
|
44
37
|
|
45
38
|
unless respond_to? :no_commands
|
data/lib/miu/publisher.rb
CHANGED
@@ -13,13 +13,41 @@ module Miu
|
|
13
13
|
|
14
14
|
klass = Class.new(socket, &block)
|
15
15
|
klass.send :include, Writable
|
16
|
-
klass.send :include, self
|
17
16
|
|
18
17
|
klass.new.tap do |pub|
|
19
18
|
address = Miu::Socket.build_address host, port
|
20
19
|
pub.connect address
|
21
20
|
end
|
22
21
|
end
|
22
|
+
|
23
|
+
def included(base)
|
24
|
+
base.extend ClassMethods
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
def socket_type(socket = nil)
|
30
|
+
if socket
|
31
|
+
@socket_type = socket
|
32
|
+
else
|
33
|
+
@socket_type
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
attr_reader :publisher
|
39
|
+
|
40
|
+
def initialize(host, port, tag)
|
41
|
+
@publisher = Miu::Publisher.new host, port, :socket => self.class.socket_type
|
42
|
+
@tag = tag
|
43
|
+
end
|
44
|
+
|
45
|
+
def close
|
46
|
+
@publisher.close
|
47
|
+
end
|
48
|
+
|
49
|
+
def write(message)
|
50
|
+
@publisher.write @tag, message
|
23
51
|
end
|
24
52
|
end
|
25
53
|
end
|
data/lib/miu/subscriber.rb
CHANGED
@@ -13,13 +13,68 @@ module Miu
|
|
13
13
|
|
14
14
|
klass = Class.new(socket, &block)
|
15
15
|
klass.send :include, Readable
|
16
|
-
klass.send :include, self
|
17
16
|
|
18
17
|
klass.new.tap do |sub|
|
19
18
|
address = Miu::Socket.build_address host, port
|
20
19
|
sub.connect address
|
21
20
|
end
|
22
21
|
end
|
22
|
+
|
23
|
+
def included(base)
|
24
|
+
base.extend ClassMethods
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
def socket_type(socket = nil)
|
30
|
+
if socket
|
31
|
+
@socket_type = socket
|
32
|
+
else
|
33
|
+
@socket_type
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
attr_reader :subscriber
|
39
|
+
|
40
|
+
def initialize(host, port, tag)
|
41
|
+
@subscriber = Miu::Subscriber.new host, port, :socket => self.class.socket_type
|
42
|
+
self.tag = tag
|
43
|
+
end
|
44
|
+
|
45
|
+
def close
|
46
|
+
@subscriber.close
|
47
|
+
end
|
48
|
+
|
49
|
+
def tag=(value)
|
50
|
+
@subscriber.unsubscribe @tag if @tag
|
51
|
+
@subscriber.subscribe value
|
52
|
+
@tag = value
|
53
|
+
end
|
54
|
+
|
55
|
+
def tag
|
56
|
+
@tag
|
57
|
+
end
|
58
|
+
|
59
|
+
def run
|
60
|
+
@subscriber.each do |packet|
|
61
|
+
begin
|
62
|
+
on_packet packet
|
63
|
+
rescue Exception => e
|
64
|
+
Miu::Logger.exception e
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
protected
|
70
|
+
|
71
|
+
def on_packet(packet)
|
72
|
+
name = method_name packet
|
73
|
+
__send__ name, packet.tag, packet.data if respond_to?(name)
|
74
|
+
end
|
75
|
+
|
76
|
+
def method_name(packet)
|
77
|
+
"on_#{packet.data.type}"
|
23
78
|
end
|
24
79
|
end
|
25
80
|
end
|
data/lib/miu/version.rb
CHANGED
data/spec/miu/command_spec.rb
CHANGED
@@ -20,7 +20,6 @@ describe Miu::Command do
|
|
20
20
|
its(:namespace) { should eq 'test_node' }
|
21
21
|
it { should respond_to :add_miu_pub_options }
|
22
22
|
it { should respond_to :add_miu_sub_options }
|
23
|
-
it { should respond_to :add_miu_pub_sub_options }
|
24
23
|
it { should respond_to :hello }
|
25
24
|
end
|
26
25
|
end
|
data/spec/miu/publisher_spec.rb
CHANGED
@@ -24,4 +24,20 @@ describe Miu::Publisher do
|
|
24
24
|
let(:base) { MyPubSocket }
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
context 'include' do
|
29
|
+
before do
|
30
|
+
publisher = stub(Miu::Publisher)
|
31
|
+
Miu::Publisher.stub!(:new).and_return(publisher)
|
32
|
+
|
33
|
+
@klass = Class.new do
|
34
|
+
include Miu::Publisher
|
35
|
+
socket_type Miu::PubSocket
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#socket_type' do
|
40
|
+
it { expect(@klass.socket_type).to eq Miu::PubSocket }
|
41
|
+
end
|
42
|
+
end
|
27
43
|
end
|
data/spec/miu/subscriber_spec.rb
CHANGED
@@ -24,4 +24,29 @@ describe Miu::Subscriber do
|
|
24
24
|
let(:base) { MySubSocket }
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
context 'include' do
|
29
|
+
before do
|
30
|
+
subscriber = stub(Miu::Subscriber)
|
31
|
+
subscriber.stub(:subscribe)
|
32
|
+
subscriber.stub(:unsubscribe)
|
33
|
+
Miu::Subscriber.stub!(:new).and_return(subscriber)
|
34
|
+
|
35
|
+
@klass = Class.new do
|
36
|
+
include Miu::Subscriber
|
37
|
+
socket_type Miu::SubSocket
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#socket_type' do
|
42
|
+
it { expect(@klass.socket_type).to eq Miu::SubSocket }
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#method_name' do
|
46
|
+
let(:subscriber) { @klass.new 'dummy', 1234, 'tag' }
|
47
|
+
it { expect(subscriber.__send__ :method_name, Miu::Packet.new('tag', Miu::Messages::Text.new)).to eq 'on_text' }
|
48
|
+
it { expect(subscriber.__send__ :method_name, Miu::Packet.new('tag', Miu::Messages::Enter.new)).to eq 'on_enter' }
|
49
|
+
it { expect(subscriber.__send__ :method_name, Miu::Packet.new('tag', Miu::Messages::Leave.new)).to eq 'on_leave' }
|
50
|
+
end
|
51
|
+
end
|
27
52
|
end
|
data/spec/support/socket.rb
CHANGED
@@ -23,7 +23,6 @@ shared_examples 'publishable socket' do
|
|
23
23
|
let(:pub) { Miu::Publisher.new(:socket => base) }
|
24
24
|
it { expect(pub).to be_kind_of(base) }
|
25
25
|
it { expect(pub).to be_kind_of(Miu::Writable) }
|
26
|
-
it { expect(pub).to be_kind_of(Miu::Publisher) }
|
27
26
|
it { expect(pub).to be_respond_to(:connect, :write) }
|
28
27
|
end
|
29
28
|
|
@@ -31,6 +30,5 @@ shared_examples 'subscribable socket' do
|
|
31
30
|
let(:sub) { Miu::Subscriber.new(:socket => base) }
|
32
31
|
it { expect(sub).to be_kind_of(base) }
|
33
32
|
it { expect(sub).to be_kind_of(Miu::Readable) }
|
34
|
-
it { expect(sub).to be_kind_of(Miu::Subscriber) }
|
35
33
|
it { expect(sub).to be_respond_to(:connect, :read) }
|
36
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mashiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|