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.
metadata CHANGED
@@ -5,11 +5,12 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
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: ffi
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: ruby-interface
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: *id003
61
- - !ruby/object:Gem::Dependency
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
- - VERSION
138
- - examples/chat/client.rb
139
- - examples/chat/server.rb
140
- - examples/ping/inproc.rb
141
- - lib/zactor.rb
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: -4054841788636265293
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: Zactor
104
+ summary: Ruby interface
187
105
  test_files:
188
- - spec/lib/actor_spec.rb
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,3 +0,0 @@
1
- module Zactor
2
- VERSION = "0.0.4"
3
- end