zactor 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -6
- data/Gemfile.lock +16 -66
- data/README.md +73 -147
- data/Rakefile +2 -0
- data/lib/ruby-interface/version.rb +3 -0
- data/lib/ruby-interface/yard.rb +8 -0
- data/lib/ruby_interface.rb +71 -0
- data/{zactor.gemspec → ruby-interface.gemspec} +7 -13
- data/spec/ruby_interface_spec.rb +127 -0
- data/spec/spec_helper.rb +1 -1
- metadata +15 -100
- data/.rake_tasks~ +0 -19
- data/.yardopts +0 -1
- data/Guardfile +0 -12
- data/VERSION +0 -1
- data/examples/chat/client.rb +0 -88
- data/examples/chat/server.rb +0 -59
- data/examples/ping/inproc.rb +0 -50
- data/lib/zactor/actor_pub.rb +0 -19
- data/lib/zactor/actor_sub.rb +0 -46
- data/lib/zactor/broker.rb +0 -71
- data/lib/zactor/log_subscriber.rb +0 -25
- data/lib/zactor/message.rb +0 -23
- data/lib/zactor/version.rb +0 -3
- data/lib/zactor.rb +0 -263
- data/spec/lib/actor_spec.rb +0 -136
- data/spec/lib/exchange_spec.rb +0 -81
- data/spec/lib/link_spec.rb +0 -67
- data/spec/lib/zactor_spec.rb +0 -40
metadata
CHANGED
@@ -5,11 +5,12 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Rudenko
|
13
|
+
- Nick Recobra
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
@@ -18,7 +19,7 @@ date: 2011-03-24 00:00:00 +03:00
|
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
22
|
+
name: activesupport
|
22
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -32,21 +33,8 @@ dependencies:
|
|
32
33
|
prerelease: false
|
33
34
|
version_requirements: *id001
|
34
35
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
36
|
+
name: i18n
|
36
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
|
-
requirements:
|
39
|
-
- - ">"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 0
|
43
|
-
version: "0"
|
44
|
-
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *id002
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: ffi-rzmq
|
49
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
50
38
|
none: false
|
51
39
|
requirements:
|
52
40
|
- - ">"
|
@@ -57,64 +45,8 @@ dependencies:
|
|
57
45
|
version: "0.1"
|
58
46
|
type: :runtime
|
59
47
|
prerelease: false
|
60
|
-
version_requirements: *
|
61
|
-
|
62
|
-
name: em-zeromq
|
63
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
|
-
requirements:
|
66
|
-
- - ">"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
segments:
|
69
|
-
- 0
|
70
|
-
- 1
|
71
|
-
version: "0.1"
|
72
|
-
type: :runtime
|
73
|
-
prerelease: false
|
74
|
-
version_requirements: *id004
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: bson
|
77
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
|
-
requirements:
|
80
|
-
- - ">"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
segments:
|
83
|
-
- 0
|
84
|
-
- 1
|
85
|
-
version: "0.1"
|
86
|
-
type: :runtime
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: *id005
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: bson_ext
|
91
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
|
-
requirements:
|
94
|
-
- - ">"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
segments:
|
97
|
-
- 0
|
98
|
-
- 1
|
99
|
-
version: "0.1"
|
100
|
-
type: :runtime
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: *id006
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: activesupport
|
105
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ">"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
- 1
|
113
|
-
version: "0.1"
|
114
|
-
type: :runtime
|
115
|
-
prerelease: false
|
116
|
-
version_requirements: *id007
|
117
|
-
description: Zactor
|
48
|
+
version_requirements: *id002
|
49
|
+
description: Ruby interface
|
118
50
|
email: ceo@prepor.ru
|
119
51
|
executables: []
|
120
52
|
|
@@ -125,32 +57,18 @@ extra_rdoc_files: []
|
|
125
57
|
files:
|
126
58
|
- .document
|
127
59
|
- .gitignore
|
128
|
-
- .rake_tasks~
|
129
60
|
- .rspec
|
130
|
-
- .yardopts
|
131
61
|
- Gemfile
|
132
62
|
- Gemfile.lock
|
133
|
-
- Guardfile
|
134
63
|
- LICENSE.txt
|
135
64
|
- README.md
|
136
65
|
- Rakefile
|
137
|
-
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
- lib/zactor/actor_pub.rb
|
143
|
-
- lib/zactor/actor_sub.rb
|
144
|
-
- lib/zactor/broker.rb
|
145
|
-
- lib/zactor/log_subscriber.rb
|
146
|
-
- lib/zactor/message.rb
|
147
|
-
- lib/zactor/version.rb
|
148
|
-
- spec/lib/actor_spec.rb
|
149
|
-
- spec/lib/exchange_spec.rb
|
150
|
-
- spec/lib/link_spec.rb
|
151
|
-
- spec/lib/zactor_spec.rb
|
66
|
+
- lib/ruby-interface/version.rb
|
67
|
+
- lib/ruby-interface/yard.rb
|
68
|
+
- lib/ruby_interface.rb
|
69
|
+
- ruby-interface.gemspec
|
70
|
+
- spec/ruby_interface_spec.rb
|
152
71
|
- spec/spec_helper.rb
|
153
|
-
- zactor.gemspec
|
154
72
|
has_rdoc: true
|
155
73
|
homepage:
|
156
74
|
licenses: []
|
@@ -165,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
83
|
requirements:
|
166
84
|
- - ">="
|
167
85
|
- !ruby/object:Gem::Version
|
168
|
-
hash: -
|
86
|
+
hash: -442756119075028289
|
169
87
|
segments:
|
170
88
|
- 0
|
171
89
|
version: "0"
|
@@ -183,10 +101,7 @@ rubyforge_project:
|
|
183
101
|
rubygems_version: 1.3.7
|
184
102
|
signing_key:
|
185
103
|
specification_version: 3
|
186
|
-
summary:
|
104
|
+
summary: Ruby interface
|
187
105
|
test_files:
|
188
|
-
- spec/
|
189
|
-
- spec/lib/exchange_spec.rb
|
190
|
-
- spec/lib/link_spec.rb
|
191
|
-
- spec/lib/zactor_spec.rb
|
106
|
+
- spec/ruby_interface_spec.rb
|
192
107
|
- spec/spec_helper.rb
|
data/.rake_tasks~
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
build
|
2
|
-
console[script]
|
3
|
-
gemcutter:release
|
4
|
-
gemspec
|
5
|
-
gemspec:debug
|
6
|
-
gemspec:generate
|
7
|
-
gemspec:release
|
8
|
-
gemspec:validate
|
9
|
-
git:release
|
10
|
-
install
|
11
|
-
rcov
|
12
|
-
release
|
13
|
-
spec
|
14
|
-
version
|
15
|
-
version:bump:major
|
16
|
-
version:bump:minor
|
17
|
-
version:bump:patch
|
18
|
-
version:write
|
19
|
-
yard
|
data/.yardopts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
-m markdown -e ruby-interface/yard
|
data/Guardfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
3
|
-
|
4
|
-
guard 'rspec', :version => 2 do
|
5
|
-
watch(/^spec\/(.*)_spec.rb/)
|
6
|
-
watch(/^lib\/(.*)\.rb/) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
-
watch(/^spec\/spec_helper.rb/) { "spec" }
|
8
|
-
|
9
|
-
# watch(/^lib\/zactor.rb/) { "spec/lib/actor_spec.rb" }
|
10
|
-
|
11
|
-
watch(/^app\/(.*)\.rb/) { |m| "spec/app/#{m[1]}_spec.rb" }
|
12
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.3
|
data/examples/chat/client.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
# ruby client.rb SELF_PORT SERVER LOGIN
|
4
|
-
# ruby client.rb 6001 0.0.0.0:8000 lolo
|
5
|
-
require 'bundler'
|
6
|
-
ENV['BUNDLE_GEMFILE'] = File.join(File.dirname(__FILE__), '..', '..', 'Gemfile')
|
7
|
-
|
8
|
-
Bundler.setup(:default)
|
9
|
-
|
10
|
-
require 'zactor'
|
11
|
-
class Client
|
12
|
-
include Zactor
|
13
|
-
|
14
|
-
zactor do
|
15
|
-
event(:message) do |o, msg, text|
|
16
|
-
puts text
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(login)
|
21
|
-
@login = login
|
22
|
-
@persons = {}
|
23
|
-
end
|
24
|
-
|
25
|
-
def start(server)
|
26
|
-
zactor.init
|
27
|
-
@server = Zactor.get_actor("server", :host => server)
|
28
|
-
connect
|
29
|
-
end
|
30
|
-
|
31
|
-
def connect
|
32
|
-
puts "Подключаемся"
|
33
|
-
zactor.send_request(@server, :new_client, @login) do
|
34
|
-
puts "Поключились!"
|
35
|
-
zactor.link(@server) { connect }
|
36
|
-
end.timeout(5) { puts "Проблемы с подключением..." }
|
37
|
-
end
|
38
|
-
|
39
|
-
def send_message(text)
|
40
|
-
if text =~ /(\w+) -> (.+)/
|
41
|
-
send_personal($1, $2)
|
42
|
-
else
|
43
|
-
zactor.send_request(@server, :message, text)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def send_personal(login, text)
|
48
|
-
if client = @persons[login]
|
49
|
-
zactor.send_request(client, :message, "(personally) #{@login}:" + "#{text}")
|
50
|
-
else
|
51
|
-
zactor.send_request(@server, :client_request, login) do |res, client|
|
52
|
-
case res
|
53
|
-
when :ok
|
54
|
-
@persons[login] = client
|
55
|
-
zactor.link(client) { @persons.delete login }
|
56
|
-
zactor.send_request(client, :message, "(personally) #{@login}:" + "#{text}")
|
57
|
-
else
|
58
|
-
puts "Ошибка отправки сообщения"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def stop
|
65
|
-
zactor.finish
|
66
|
-
EM.stop
|
67
|
-
end
|
68
|
-
|
69
|
-
module KeyboardInput
|
70
|
-
include EM::Protocols::LineText2
|
71
|
-
attr_accessor :client
|
72
|
-
def receive_line(data)
|
73
|
-
client.send_message data
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
client = Client.new ARGV[2]
|
80
|
-
|
81
|
-
Signal.trap('INT') { client.stop }
|
82
|
-
Signal.trap('TERM') { client.stop }
|
83
|
-
|
84
|
-
EM.run do
|
85
|
-
Zactor.start ARGV[0]#, :debug => true
|
86
|
-
client.start ARGV[1]
|
87
|
-
EM.open_keyboard(Client::KeyboardInput) { |c| c.client = client }
|
88
|
-
end
|
data/examples/chat/server.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
# ruby server.rb PORT
|
4
|
-
# ruby server.rb 8000
|
5
|
-
require 'bundler'
|
6
|
-
ENV['BUNDLE_GEMFILE'] = File.join(File.dirname(__FILE__), '..', '..', 'Gemfile')
|
7
|
-
Bundler.setup(:default)
|
8
|
-
|
9
|
-
require 'zactor'
|
10
|
-
|
11
|
-
class Server
|
12
|
-
include Zactor
|
13
|
-
|
14
|
-
zactor do
|
15
|
-
identity "server"
|
16
|
-
|
17
|
-
event(:new_client) do |o, msg, login|
|
18
|
-
o.new_client msg.sender, login
|
19
|
-
msg.reply :ok
|
20
|
-
end
|
21
|
-
|
22
|
-
event(:client_request) do |o, msg, login|
|
23
|
-
if client = o.clients.detect { |k, v| v == login }
|
24
|
-
msg.reply :ok, client.first
|
25
|
-
else
|
26
|
-
msg.reply :error
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
event(:message) do |o, msg, text|
|
31
|
-
o.send_message msg.sender, text
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
attr_accessor :clients
|
36
|
-
def initialize
|
37
|
-
zactor.init
|
38
|
-
@clients = {}
|
39
|
-
end
|
40
|
-
|
41
|
-
def new_client(client, login)
|
42
|
-
@clients[client] = login
|
43
|
-
send_message client, "присоединился"
|
44
|
-
zactor.link client do
|
45
|
-
send_message client, "отсоединился"
|
46
|
-
clients.delete client
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def send_message(from, message)
|
51
|
-
(clients.keys - [from]).each { |c| zactor.send_request c, :message, "#{clients[from]}: #{message}"}
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
EM.run do
|
56
|
-
Zactor.start ARGV[0]#, :debug => true
|
57
|
-
Server.new
|
58
|
-
puts "Server started"
|
59
|
-
end
|
data/examples/ping/inproc.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "bundler"
|
3
|
-
|
4
|
-
ENV['BUNDLE_GEMFILE'] = File.join(File.dirname(__FILE__), '..', '..', 'Gemfile')
|
5
|
-
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
|
8
|
-
require 'zactor'
|
9
|
-
require 'eventmachine'
|
10
|
-
|
11
|
-
class A
|
12
|
-
include Zactor
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
zactor.init
|
16
|
-
ping Zactor.get_actor("b")
|
17
|
-
end
|
18
|
-
|
19
|
-
def ping(actor)
|
20
|
-
puts "Ping!"
|
21
|
-
zactor.send_request actor, :ping do |res|
|
22
|
-
puts res
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
class B
|
29
|
-
include Zactor
|
30
|
-
|
31
|
-
zactor do
|
32
|
-
identity "b"
|
33
|
-
|
34
|
-
event(:ping) do |o, msg|
|
35
|
-
msg.reply "Pong!"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def initialize
|
40
|
-
zactor.init
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
EM.run do
|
46
|
-
Zactor.start 8000
|
47
|
-
|
48
|
-
a = A.new
|
49
|
-
b = B.new
|
50
|
-
end
|
data/lib/zactor/actor_pub.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Zactor
|
2
|
-
class ActorPub
|
3
|
-
include ZMQMEssages
|
4
|
-
|
5
|
-
attr_accessor :actor
|
6
|
-
def initialize(actor, endpoint)
|
7
|
-
Zactor.logger.debug "ZactorPub (#{actor.actor}): starting"
|
8
|
-
@actor = actor
|
9
|
-
@connection = Zactor.zmq.connect ZMQ::PUB, endpoint, self
|
10
|
-
@socket = @connection.socket
|
11
|
-
end
|
12
|
-
|
13
|
-
def close
|
14
|
-
@connection.unbind
|
15
|
-
rescue
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/lib/zactor/actor_sub.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
module Zactor
|
2
|
-
class ActorSub
|
3
|
-
attr_accessor :actor
|
4
|
-
def initialize(actor)
|
5
|
-
Zactor.logger.debug "ZactorSub (#{actor.actor}): starting"
|
6
|
-
@actor = actor
|
7
|
-
@connection = Zactor.zmq.connect ZMQ::SUB, "inproc://zactor_broker_pub", self
|
8
|
-
@connection.subscribe actor.actor['identity']
|
9
|
-
end
|
10
|
-
|
11
|
-
def on_readable(socket, messages)
|
12
|
-
@connection.notify_readable = true
|
13
|
-
Zactor.logger.debug "ZactorSub for #{actor.actor}: Messages!"
|
14
|
-
to = messages.shift
|
15
|
-
sender = messages.shift
|
16
|
-
case messages.shift.copy_out_string
|
17
|
-
when "reply"
|
18
|
-
reply messages
|
19
|
-
when "request"
|
20
|
-
request sender, messages
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def request(sender_mes, messages)
|
25
|
-
Zactor.logger.debug "ZactorSub for #{actor.actor}: request!"
|
26
|
-
sender = BSON.deserialize(sender_mes.copy_out_string)
|
27
|
-
callback_id = messages[0].copy_out_string
|
28
|
-
event = messages[1].copy_out_string
|
29
|
-
args = BSON.deserialize(messages[2].copy_out_string)['args']
|
30
|
-
actor.receive_request sender, event, callback_id, *args
|
31
|
-
end
|
32
|
-
|
33
|
-
def reply(messages)
|
34
|
-
Zactor.logger.debug "ZactorSub for #{actor.actor}: reply!"
|
35
|
-
callback_id = messages[0].copy_out_string
|
36
|
-
if callback_id != ''
|
37
|
-
actor.receive_reply callback_id, *BSON.deserialize(messages[1].copy_out_string)['args']
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def close
|
42
|
-
@connection.unbind
|
43
|
-
rescue
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/lib/zactor/broker.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
module Zactor
|
2
|
-
class BrokerIn
|
3
|
-
attr_accessor :broker, :params
|
4
|
-
def initialize(broker, params = {})
|
5
|
-
@broker = broker
|
6
|
-
@params = params
|
7
|
-
init_connection
|
8
|
-
end
|
9
|
-
|
10
|
-
def on_readable(socket, messages)
|
11
|
-
Zactor.logger.debug "Broker: messages"
|
12
|
-
@broker.pub.request messages
|
13
|
-
end
|
14
|
-
|
15
|
-
def close
|
16
|
-
@connection.unbind
|
17
|
-
rescue
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
class BrokerPub
|
22
|
-
include ZMQMEssages
|
23
|
-
def initialize(broker)
|
24
|
-
@broker = broker
|
25
|
-
@connection = Zactor.zmq.bind ZMQ::PUB, "inproc://zactor_broker_pub", self
|
26
|
-
@socket = @connection.socket
|
27
|
-
end
|
28
|
-
|
29
|
-
def request(messages)
|
30
|
-
Zactor.logger.debug { "Broker: request #{messages.map(&:copy_out_string).inspect}" }
|
31
|
-
send_messages messages
|
32
|
-
end
|
33
|
-
|
34
|
-
def close
|
35
|
-
@connection.unbind
|
36
|
-
rescue
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class BrokerSub < BrokerIn
|
41
|
-
def init_connection
|
42
|
-
Zactor.logger.info "Starting sub broker tcp://0.0.0.0:#{Zactor.broker_port}"
|
43
|
-
@connection = Zactor.zmq.bind ZMQ::SUB, "tcp://0.0.0.0:#{Zactor.broker_port}", self
|
44
|
-
@connection.bind "inproc://zactor_broker_sub"
|
45
|
-
@connection.subscribe ''
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class BrokerPull < BrokerIn
|
50
|
-
def init_connection
|
51
|
-
Zactor.logger.info "Starting pull broker tcp://#{params[:host]}"
|
52
|
-
@connection = Zactor.zmq.connect ZMQ::PULL, "tcp://#{params[:host]}", self
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
class Broker
|
57
|
-
attr_accessor :sub, :pub
|
58
|
-
def initialize(params = {})
|
59
|
-
Zactor.logger.info "Broker: starting"
|
60
|
-
@pub = BrokerPub.new self
|
61
|
-
@subs = []
|
62
|
-
@subs << BrokerSub.new(self)
|
63
|
-
@subs << BrokerPull.new(self, :host => params[:balancer]) if params[:balancer]
|
64
|
-
end
|
65
|
-
|
66
|
-
def finish
|
67
|
-
@pub.close
|
68
|
-
@subs.each(&:close)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require 'active_support/log_subscriber'
|
3
|
-
module Zactor
|
4
|
-
class LogSubscriber < ActiveSupport::LogSubscriber
|
5
|
-
def logger
|
6
|
-
Zactor.logger
|
7
|
-
end
|
8
|
-
|
9
|
-
def merge(event)
|
10
|
-
payload = event.payload
|
11
|
-
|
12
|
-
message = "[Zactor](%.0fms) sending request '#{payload[:event]}' to '#{payload[:actor]}'' with params #{paylaod[:args].inspect}" % event.duration
|
13
|
-
debug message
|
14
|
-
end
|
15
|
-
|
16
|
-
def send_to(event)
|
17
|
-
payload = event.payload
|
18
|
-
|
19
|
-
message = "[Zactor] sending messages to '#{payload[:actor]}'" % event.duration
|
20
|
-
debug message
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
Zactor::LogSubscriber.attach_to :zactor
|
data/lib/zactor/message.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Zactor
|
2
|
-
class Message
|
3
|
-
attr_accessor :actor, :params
|
4
|
-
attr_accessor :callback_id, :args
|
5
|
-
def initialize(actor, params = {})
|
6
|
-
@actor = actor
|
7
|
-
@params = params
|
8
|
-
end
|
9
|
-
|
10
|
-
def sender
|
11
|
-
params[:sender]
|
12
|
-
end
|
13
|
-
|
14
|
-
def args
|
15
|
-
params[:args]
|
16
|
-
end
|
17
|
-
|
18
|
-
def reply(*args)
|
19
|
-
return false unless params[:callback_id]
|
20
|
-
actor.send_reply sender, params[:callback_id], *args
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/lib/zactor/version.rb
DELETED