carrot 0.7.0 → 0.8.0
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/VERSION.yml +3 -2
- data/carrot.gemspec +5 -4
- data/lib/amqp/queue.rb +14 -3
- data/lib/amqp/server.rb +3 -1
- data/lib/carrot.rb +7 -3
- data/test/carrot_test.rb +11 -1
- metadata +2 -2
data/VERSION.yml
CHANGED
data/carrot.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{carrot}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.8.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Amos Elliston"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-06-10}
|
13
13
|
s.description = %q{A synchronous version of the ruby amqp client}
|
14
14
|
s.email = %q{amos@geni.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -60,3 +60,4 @@ Gem::Specification.new do |s|
|
|
60
60
|
else
|
61
61
|
end
|
62
62
|
end
|
63
|
+
|
data/lib/amqp/queue.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
module Carrot::AMQP
|
2
2
|
class Queue
|
3
|
-
attr_reader
|
3
|
+
attr_reader :name, :carrot
|
4
4
|
attr_accessor :delivery_tag
|
5
5
|
|
6
6
|
def initialize(carrot, name, opts = {})
|
7
|
-
@server = carrot.server
|
8
7
|
@opts = opts
|
9
8
|
@name = name
|
10
9
|
@carrot = carrot
|
@@ -19,7 +18,7 @@ module Carrot::AMQP
|
|
19
18
|
Protocol::Basic::Get.new({ :queue => name, :consumer_tag => name, :no_ack => !opts.delete(:ack), :nowait => true }.merge(opts))
|
20
19
|
)
|
21
20
|
method = server.next_method
|
22
|
-
return unless method.
|
21
|
+
return unless method.kind_of?(Protocol::Basic::GetOk)
|
23
22
|
|
24
23
|
self.delivery_tag = method.delivery_tag
|
25
24
|
|
@@ -56,6 +55,8 @@ module Carrot::AMQP
|
|
56
55
|
Protocol::Queue::Declare.new({ :queue => name, :passive => true }.merge(opts))
|
57
56
|
)
|
58
57
|
method = server.next_method
|
58
|
+
return [nil, nil] if method.kind_of?(Protocol::Connection::Close)
|
59
|
+
|
59
60
|
[method.message_count, method.consumer_count]
|
60
61
|
end
|
61
62
|
|
@@ -85,6 +86,16 @@ module Carrot::AMQP
|
|
85
86
|
carrot.queues.delete(name)
|
86
87
|
end
|
87
88
|
|
89
|
+
def purge(opts = {})
|
90
|
+
server.send_frame(
|
91
|
+
Protocol::Queue::Purge.new({ :queue => name, :nowait => true }.merge(opts))
|
92
|
+
)
|
93
|
+
end
|
94
|
+
|
95
|
+
def server
|
96
|
+
carrot.server
|
97
|
+
end
|
98
|
+
|
88
99
|
private
|
89
100
|
def exchange
|
90
101
|
@exchange ||= Exchange.new(carrot, :direct, '', :key => name)
|
data/lib/amqp/server.rb
CHANGED
@@ -66,6 +66,8 @@ module Carrot::AMQP
|
|
66
66
|
)
|
67
67
|
puts "Error closing connection" unless next_method.is_a?(Protocol::Connection::CloseOk)
|
68
68
|
|
69
|
+
rescue ServerDown => e
|
70
|
+
ensure
|
69
71
|
close_socket
|
70
72
|
end
|
71
73
|
|
@@ -86,7 +88,7 @@ module Carrot::AMQP
|
|
86
88
|
def send_command(cmd, *args)
|
87
89
|
begin
|
88
90
|
socket.__send__(cmd, *args)
|
89
|
-
rescue Errno::EPIPE, IOError => e
|
91
|
+
rescue Errno::EPIPE, IOError, Errno::ECONNRESET, Errno::EINVAL => e
|
90
92
|
raise ServerDown, e.message
|
91
93
|
end
|
92
94
|
end
|
data/lib/carrot.rb
CHANGED
@@ -27,19 +27,23 @@ class Carrot
|
|
27
27
|
end
|
28
28
|
class Error < StandardError; end
|
29
29
|
|
30
|
-
attr_accessor :server
|
31
|
-
|
32
30
|
def initialize(opts = {})
|
33
|
-
@
|
31
|
+
@opts = opts
|
34
32
|
end
|
35
33
|
|
36
34
|
def queue(name, opts = {})
|
37
35
|
queues[name] ||= AMQP::Queue.new(self, name, opts)
|
38
36
|
end
|
39
37
|
|
38
|
+
def server
|
39
|
+
@server ||= AMQP::Server.new(@opts)
|
40
|
+
end
|
41
|
+
|
40
42
|
def stop
|
41
43
|
server.close
|
44
|
+
@server = nil
|
42
45
|
end
|
46
|
+
alias :reset :stop
|
43
47
|
|
44
48
|
def queues
|
45
49
|
@queues ||= {}
|
data/test/carrot_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper'
|
2
2
|
|
3
3
|
class CarrotTest < Test::Unit::TestCase
|
4
|
+
TEST_QUEUE = '_carrot_test'
|
4
5
|
|
5
6
|
test "simple server connection" do
|
6
7
|
c = Carrot.new
|
@@ -8,8 +9,17 @@ class CarrotTest < Test::Unit::TestCase
|
|
8
9
|
|
9
10
|
test "large messages" do
|
10
11
|
msg = 'a' * 1024 * 1024
|
11
|
-
q = Carrot.queue(
|
12
|
+
q = Carrot.queue(TEST_QUEUE)
|
12
13
|
q.publish(msg)
|
13
14
|
assert_equal msg, q.pop
|
14
15
|
end
|
16
|
+
|
17
|
+
test "reset" do
|
18
|
+
c = Carrot.new
|
19
|
+
q = c.queue(TEST_QUEUE)
|
20
|
+
count = q.message_count
|
21
|
+
q.publish('test')
|
22
|
+
c.reset
|
23
|
+
assert_equal count + 1, q.message_count
|
24
|
+
end
|
15
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amos Elliston
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-06-10 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|