zactor 0.0.4 → 0.0.5
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.
- 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