qpid_proton 0.26.0 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,72 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- require 'qpid_proton'
20
- require 'optparse'
21
-
22
- class HelloWorld < Qpid::Proton::Handler::MessagingHandler
23
-
24
- def initialize(server, address)
25
- super()
26
- @server = server
27
- @address = address
28
- end
29
-
30
- def on_start(event)
31
- conn = event.container.connect(:address => @server)
32
- event.container.create_sender(conn, :target => @address)
33
- event.container.create_receiver(conn, :source => @address)
34
- end
35
-
36
- def on_sendable(event)
37
- msg = Qpid::Proton::Message.new
38
- msg.body = "Hello world!"
39
- event.sender.send(msg)
40
- event.sender.close
41
- end
42
-
43
- def on_message(event)
44
- puts event.message.body
45
- event.connection.close
46
- end
47
-
48
- def on_transport_error(event)
49
- raise "Connection error: #{event.transport.condition}"
50
- end
51
- end
52
-
53
- options = {
54
- :address => "localhost:5672",
55
- :queue => "examples"
56
- }
57
-
58
- OptionParser.new do |opts|
59
- opts.banner = "Usage: helloworld_direct.rb [options]"
60
-
61
- opts.on("-a", "--address=ADDRESS", "Send messages to ADDRESS (def. #{options[:address]}).") do |address|
62
- options[:address] = address
63
- end
64
-
65
- opts.on("-q", "--queue=QUEUE", "Send messages to QUEUE (def. #{options[:queue]})") do |queue|
66
- options[:queue] = queue
67
- end
68
-
69
- end.parse!
70
-
71
- hw = HelloWorld.new(options[:address], "examples")
72
- Qpid::Proton::Reactor::Container.new(hw).run
@@ -1,73 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- require 'qpid_proton'
20
- require 'optparse'
21
-
22
- options = {
23
- :address => "localhost:5672/examples",
24
- }
25
-
26
- class HelloWorldDirect < Qpid::Proton::Handler::MessagingHandler
27
-
28
- include Qpid::Proton::Util::Wrapper
29
-
30
- def initialize(url)
31
- super()
32
- @url = url
33
- end
34
-
35
- def on_start(event)
36
- @acceptor = event.container.listen(@url)
37
- event.container.create_sender(@url)
38
- end
39
-
40
- def on_sendable(event)
41
- msg = Qpid::Proton::Message.new
42
- msg.body = "Hello world!"
43
- event.sender.send(msg)
44
- event.sender.close
45
- end
46
-
47
- def on_message(event)
48
- puts "#{event.message.body}"
49
- end
50
-
51
- def on_accepted(event)
52
- event.connection.close
53
- end
54
-
55
- def on_connection_closed(event)
56
- @acceptor.close
57
- end
58
-
59
- end
60
-
61
- OptionParser.new do |opts|
62
- opts.banner = "Usage: helloworld_direct.rb [options]"
63
-
64
- opts.on("-a", "--address=ADDRESS", "Send messages to ADDRESS (def. #{options[:address]}).") do |address|
65
- options[:address] = address
66
- end
67
-
68
- end.parse!
69
-
70
- begin
71
- Qpid::Proton::Reactor::Container.new(HelloWorldDirect.new(options[:address])).run
72
- rescue Interrupt => error
73
- end
@@ -1,68 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- class Driver
20
-
21
- def initialize
22
- @selectables = {}
23
- end
24
-
25
- def add(selectable)
26
- @selectables[selectable.fileno] = selectable
27
- end
28
-
29
- def process
30
- reading = []
31
- writing = []
32
-
33
- @selectables.each_value do |sel|
34
- if sel.closed? || sel.fileno.nil?
35
- @selectables.delete(sel.fileno)
36
- else
37
- begin
38
- reading << sel.to_io if sel.reading?
39
- writing << sel.to_io if sel.writing?
40
- rescue Exception => error
41
- puts "Error: #{error}"
42
- puts error.backtrace.join("\n");
43
- # @selectables.delete(sel.fileno)
44
- end
45
- end
46
- end
47
-
48
- read_from, write_to = IO.select(reading, writing, [], 0)
49
-
50
- unless read_from.nil?
51
- read_from.each do |r|
52
- sel = @selectables[r.fileno]
53
- sel.readable unless sel.nil? || sel.closed?
54
- end
55
- end
56
-
57
- begin
58
- unless write_to.nil?
59
- write_to.each do |w|
60
- sel = @selectables[w.fileno]
61
- sel.writable unless sel.nil? || sel.closed?
62
- end
63
- end
64
-
65
- end
66
- end
67
-
68
- end
@@ -1,26 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- require "qpid_proton"
20
-
21
- require "selectable"
22
- require "driver"
23
- require "socket"
24
- require "monitor"
25
-
26
- include Socket::Constants
@@ -1,119 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- class Selectable
20
-
21
- attr_reader :transport
22
-
23
- def initialize(transport, socket)
24
- @transport = transport
25
- @socket = socket
26
- @socket.autoclose = true
27
- @write_done = false
28
- @read_done = false
29
- end
30
-
31
- def closed?
32
- return true if @socket.closed?
33
- return false if !@read_done && !@write_done
34
- @socket.close
35
- true
36
- end
37
-
38
- def fileno
39
- @socket.fileno unless @socket.closed?
40
- end
41
-
42
- def to_io
43
- @socket
44
- end
45
-
46
- def reading?
47
- return false if @read_done
48
- c = @transport.capacity
49
- if c > 0
50
- return true
51
- elsif c < 0
52
- @read_done = true
53
- return false
54
- else
55
- return false
56
- end
57
- end
58
-
59
- def writing?
60
- return false if @write_done
61
- begin
62
- p = @transport.pending
63
- if p > 0
64
- return true
65
- elsif p < 0
66
- @write_done = true
67
- return false
68
- else
69
- return false
70
- end
71
- rescue Qpid::Proton::TransportError => error
72
- @write_done = true
73
- return false
74
- end
75
- end
76
-
77
- def readable
78
- c = @transport.capacity
79
- if c > 0
80
- begin
81
- data = @socket.recv(c)
82
- if data
83
- @transport.push(data)
84
- else
85
- @transport.close_tail
86
- end
87
- rescue Exception => error
88
- puts "read error; #{error}"
89
- @transport.close_tail
90
- @read_done = true
91
- end
92
- elsif c < 0
93
- @read_done = true
94
- end
95
- end
96
-
97
- def writable
98
- begin
99
- p = @transport.pending
100
- if p > 0
101
- data = @transport.peek(p)
102
- n = @socket.send(data, 0)
103
- @transport.pop(n)
104
- elsif p < 0
105
- @write_done = true
106
- end
107
- rescue Exception => error
108
- puts "write error: #{error}"
109
- puts error.backtrace.join("\n")
110
- @transport.close_head
111
- @write_done = true
112
- end
113
- end
114
-
115
- def tick(now)
116
- @transport.tick(now)
117
- end
118
-
119
- end
@@ -1,89 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
-
19
- class ExampleSend < Qpid::Proton::Handler::MessagingHandler
20
-
21
- attr_reader :url
22
-
23
- def initialize(url, expected)
24
- super()
25
- @url = url
26
- @sent = 0
27
- @confirmed = 0
28
- @expected = expected
29
- end
30
-
31
- def on_sendable(event)
32
- while event.sender.credit > 0 && @sent < @expected
33
- msg = Qpid::Proton::Message.new
34
- msg.body = "sequence #{@sent}"
35
- msg.id = @sent
36
- event.sender.send(msg)
37
- @sent = @sent + 1
38
- end
39
- end
40
-
41
- def on_accepted(event)
42
- @confirmed = @confirmed + 1
43
- if self.finished?
44
- puts "#{@expected > 1 ? 'All ' : ''}#{@expected} message#{@expected > 1 ? 's' : ''} confirmed!"
45
- event.connection.close
46
- end
47
- end
48
-
49
- def on_disconnected(event)
50
- @sent = @confirmed
51
- end
52
-
53
- def finished?
54
- @confirmed == @expected
55
- end
56
-
57
- end
58
-
59
- class ExampleReceive < Qpid::Proton::Handler::MessagingHandler
60
-
61
- attr_reader :url
62
-
63
- def initialize(url, expected)
64
- super()
65
- @url = url
66
- @expected = expected
67
- @received = 0
68
- end
69
-
70
- def on_message(event)
71
- if event.message.id.nil? || event.message.id < @received
72
- puts "Missing or old message id: id=#{event.message.id}"
73
- return
74
- end
75
- if @expected.zero? || (@received < @expected)
76
- puts "Received: #{event.message.body}"
77
- @received = @received + 1
78
- if finished?
79
- event.receiver.close
80
- event.connection.close
81
- end
82
- end
83
- end
84
-
85
- def finished?
86
- @received == @expected
87
- end
88
-
89
- end