em-zmq-tp10 0.1.10 → 0.1.11
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.
@@ -7,16 +7,16 @@ module EventMachine
|
|
7
7
|
# to react when message could not be send
|
8
8
|
#
|
9
9
|
# @example
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
10
|
+
# class MyDealer < EM::Protocols::Zmq2::PreDealer
|
11
|
+
# def receive_message(message)
|
12
|
+
# puts "Message received: #{message.inspect}"
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
# dealer = MyDealer.new
|
16
|
+
# dealer.connect('tcp://127.0.0.1:8000')
|
17
|
+
# if !dealer.send_message(['asdf','fdas'])
|
18
|
+
# puts "Could not send message (no free peers)"
|
13
19
|
# end
|
14
|
-
# end
|
15
|
-
# dealer = MyDealer.new
|
16
|
-
# dealer.connect('tcp://127.0.0.1:8000')
|
17
|
-
# if !dealer.send_message(['asdf','fdas'])
|
18
|
-
# puts "Could not send message (no free peers)"
|
19
|
-
# end
|
20
20
|
class PreDealer < Socket
|
21
21
|
# @private
|
22
22
|
def choose_peer(even_if_busy = false)
|
@@ -59,16 +59,16 @@ module EventMachine
|
|
59
59
|
# The only visible change from PreDealer is less frequent +send_message+ false return.
|
60
60
|
#
|
61
61
|
# @example
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
62
|
+
# class MyDealer < EM::Protocols::Zmq2::Dealer
|
63
|
+
# def receive_message(message)
|
64
|
+
# puts "Message received: #{message.inspect}"
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
# dealer = MyDealer.new
|
68
|
+
# dealer.connect('tcp://127.0.0.1:8000')
|
69
|
+
# if !dealer.send_message(['asdf','fdas'])
|
70
|
+
# puts "No free peers and outgoing queue is full"
|
65
71
|
# end
|
66
|
-
# end
|
67
|
-
# dealer = MyDealer.new
|
68
|
-
# dealer.connect('tcp://127.0.0.1:8000')
|
69
|
-
# if !dealer.send_message(['asdf','fdas'])
|
70
|
-
# puts "No free peers and outgoing queue is full"
|
71
|
-
# end
|
72
72
|
class Dealer < PreDealer
|
73
73
|
# :stopdoc:
|
74
74
|
def initialize(opts = {})
|
@@ -109,14 +109,14 @@ module EventMachine
|
|
109
109
|
# on every incoming message (instead of #receive_message)
|
110
110
|
#
|
111
111
|
# @example
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
#
|
112
|
+
# dealer = EM::Protocols::Zmq2::DealerCb.new do |message|
|
113
|
+
# puts "Receive message #{message.inspect}"
|
114
|
+
# end
|
115
|
+
# dealer.connect('ipc://rep')
|
116
|
+
# dealer.send_message(['hello','world'])
|
117
117
|
class DealerCb < Dealer
|
118
118
|
# Accepts callback as second parameter or block
|
119
|
-
# :
|
119
|
+
# :call-seq:
|
120
120
|
# new(opts) do |message| end
|
121
121
|
# new(opts, proc{|message| })
|
122
122
|
def initialize(opts = {}, cb = nil, &block)
|
@@ -13,7 +13,7 @@ module EventMachine
|
|
13
13
|
# @example
|
14
14
|
# class MyReq < EM::Protocols::Zmq2::PreReq
|
15
15
|
# def receive_reply(message, data, request_id)
|
16
|
-
# puts "received message #{message} and stored data #{data}
|
16
|
+
# puts "received message #{message} and stored data #{data}"
|
17
17
|
# end
|
18
18
|
# end
|
19
19
|
#
|
@@ -233,7 +233,7 @@ module EventMachine
|
|
233
233
|
when :drop_first
|
234
234
|
hwm = @hwm - (request ? 1 : 0)
|
235
235
|
while @requests.size > hwm
|
236
|
-
|
236
|
+
_, message = @requests.shift
|
237
237
|
cancel_message(message)
|
238
238
|
end
|
239
239
|
@requests[request.first] = request.dup if request
|
@@ -307,9 +307,9 @@ module EventMachine
|
|
307
307
|
wrapped = Wrapped.new(data, deferrable)
|
308
308
|
callback ||= block
|
309
309
|
if Proc === callback
|
310
|
-
deferrable.callback
|
310
|
+
deferrable.callback(&callback)
|
311
311
|
else
|
312
|
-
deferrable.callback{|reply,
|
312
|
+
deferrable.callback{|reply, _data| callback.call(reply, _data)}
|
313
313
|
end
|
314
314
|
if request_id = super(message, wrapped)
|
315
315
|
deferrable.errback{ cancel_request(request_id) }
|
@@ -124,9 +124,13 @@ module EM
|
|
124
124
|
@connections.clear
|
125
125
|
@conn_addresses.clear
|
126
126
|
@reconnect_timers.each{|_, timer| EM.cancel_timer(timer)}
|
127
|
-
@
|
128
|
-
|
129
|
-
|
127
|
+
unless @peers.empty?
|
128
|
+
@after_writting = cb || block
|
129
|
+
flush_all_queue if @after_writting
|
130
|
+
@peers.values.each{|c| c.close_connection(!!@after_writting)}
|
131
|
+
else
|
132
|
+
EM.next_tick @after_writting
|
133
|
+
end
|
130
134
|
@bindings.each{|c|
|
131
135
|
unless String === c
|
132
136
|
EM.stop_server c
|
data/tests/test_inproc.rb
CHANGED
@@ -29,7 +29,7 @@ describe 'InProc' do
|
|
29
29
|
2.times.map{|i| IPDealer.new(identity: "sink.#{i}") }
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def run_this_test
|
33
33
|
EM.run {
|
34
34
|
connected.callback do
|
35
35
|
fan.peers['sink.0'].wont_be_nil
|
@@ -53,7 +53,7 @@ describe 'InProc' do
|
|
53
53
|
it "should send messages to several connected socket" do
|
54
54
|
sinks.each{|sink| sink.connect 'inproc://fan'}
|
55
55
|
fan.bind 'inproc://fan'
|
56
|
-
|
56
|
+
run_this_test
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should send messages to several binded sockets" do
|
@@ -62,7 +62,7 @@ describe 'InProc' do
|
|
62
62
|
sink.bind bind_point
|
63
63
|
fan.connect bind_point
|
64
64
|
}
|
65
|
-
|
65
|
+
run_this_test
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should send messages to inproc and tcp" do
|
@@ -70,7 +70,7 @@ describe 'InProc' do
|
|
70
70
|
fan.connect 'tcp://127.0.0.1:9876'
|
71
71
|
sinks[1].bind 'inproc://sink.1'
|
72
72
|
fan.connect 'inproc://sink.1'
|
73
|
-
|
73
|
+
run_this_test
|
74
74
|
end
|
75
75
|
|
76
76
|
if RUBY_PLATFORM !~ /window/
|
@@ -79,7 +79,7 @@ describe 'InProc' do
|
|
79
79
|
fan.connect 'ipc://falcon'
|
80
80
|
sinks[1].bind 'inproc://sink.1'
|
81
81
|
fan.connect 'inproc://sink.1'
|
82
|
-
|
82
|
+
run_this_test
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
metadata
CHANGED
@@ -1,25 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-zmq-tp10
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.10
|
5
4
|
prerelease:
|
5
|
+
version: 0.1.11
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sokolov Yura 'funny-falcon'
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
15
|
+
type: :runtime
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
@@ -27,15 +26,15 @@ dependencies:
|
|
27
26
|
- - ! '>='
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
version: '0'
|
29
|
+
name: eventmachine
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
31
|
+
type: :development
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
|
-
type: :development
|
39
38
|
prerelease: false
|
40
39
|
version_requirements: !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
@@ -43,6 +42,7 @@ dependencies:
|
|
43
42
|
- - ! '>='
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '0'
|
45
|
+
name: ffi-rzmq
|
46
46
|
description: Implementation of ZMQ2.x transport protocol - ZMTP1.0
|
47
47
|
email:
|
48
48
|
- funny.falcon@gmail.com
|
@@ -106,3 +106,4 @@ summary: Implementation of ZMQ2.1 transport protocol and main socket types using
|
|
106
106
|
for managing TCP/UNIX connections, doing nonblocking writes and calling callback
|
107
107
|
on incoming messages.
|
108
108
|
test_files: []
|
109
|
+
has_rdoc:
|