rabbitmq 0.2.3 → 0.2.4

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/ext/rabbitmq/Rakefile +14 -9
  4. data/lib/rabbitmq/connection/channel_manager.rb +61 -0
  5. data/lib/rabbitmq/connection/event_manager.rb +55 -0
  6. data/lib/rabbitmq/connection/transport.rb +157 -0
  7. data/lib/rabbitmq/ffi.rb +4 -356
  8. data/lib/rabbitmq/ffi/ext.rb +12 -299
  9. data/lib/rabbitmq/ffi/ext/basic_properties.rb +57 -0
  10. data/lib/rabbitmq/ffi/ext/bytes.rb +29 -0
  11. data/lib/rabbitmq/ffi/ext/connection_info.rb +12 -0
  12. data/lib/rabbitmq/ffi/ext/field_value.rb +49 -0
  13. data/lib/rabbitmq/ffi/ext/frame.rb +43 -0
  14. data/lib/rabbitmq/ffi/ext/frame_payload_properties.rb +12 -0
  15. data/lib/rabbitmq/ffi/ext/method.rb +49 -0
  16. data/lib/rabbitmq/ffi/ext/table.rb +51 -0
  17. data/lib/rabbitmq/ffi/ext/timeval.rb +18 -0
  18. data/lib/rabbitmq/ffi/gen.rb +65 -0
  19. data/lib/rabbitmq/ffi/gen/access_request.rb +49 -0
  20. data/lib/rabbitmq/ffi/gen/access_request_ok.rb +29 -0
  21. data/lib/rabbitmq/ffi/gen/basic_ack.rb +36 -0
  22. data/lib/rabbitmq/ffi/gen/basic_cancel.rb +37 -0
  23. data/lib/rabbitmq/ffi/gen/basic_cancel_ok.rb +30 -0
  24. data/lib/rabbitmq/ffi/gen/basic_consume.rb +57 -0
  25. data/lib/rabbitmq/ffi/gen/basic_consume_ok.rb +30 -0
  26. data/lib/rabbitmq/ffi/gen/basic_deliver.rb +48 -0
  27. data/lib/rabbitmq/ffi/gen/basic_get.rb +40 -0
  28. data/lib/rabbitmq/ffi/gen/basic_get_empty.rb +30 -0
  29. data/lib/rabbitmq/ffi/gen/basic_get_ok.rb +47 -0
  30. data/lib/rabbitmq/ffi/gen/basic_nack.rb +39 -0
  31. data/lib/rabbitmq/ffi/gen/basic_publish.rb +47 -0
  32. data/lib/rabbitmq/ffi/gen/basic_qos.rb +39 -0
  33. data/lib/rabbitmq/ffi/gen/basic_qos_ok.rb +28 -0
  34. data/lib/rabbitmq/ffi/gen/basic_recover.rb +29 -0
  35. data/lib/rabbitmq/ffi/gen/basic_recover_async.rb +29 -0
  36. data/lib/rabbitmq/ffi/gen/basic_recover_ok.rb +28 -0
  37. data/lib/rabbitmq/ffi/gen/basic_reject.rb +36 -0
  38. data/lib/rabbitmq/ffi/gen/basic_return.rb +45 -0
  39. data/lib/rabbitmq/ffi/gen/channel_close.rb +45 -0
  40. data/lib/rabbitmq/ffi/gen/channel_close_ok.rb +28 -0
  41. data/lib/rabbitmq/ffi/gen/channel_flow.rb +29 -0
  42. data/lib/rabbitmq/ffi/gen/channel_flow_ok.rb +29 -0
  43. data/lib/rabbitmq/ffi/gen/channel_open.rb +30 -0
  44. data/lib/rabbitmq/ffi/gen/channel_open_ok.rb +30 -0
  45. data/lib/rabbitmq/ffi/gen/confirm_select.rb +29 -0
  46. data/lib/rabbitmq/ffi/gen/confirm_select_ok.rb +28 -0
  47. data/lib/rabbitmq/ffi/gen/connection_blocked.rb +30 -0
  48. data/lib/rabbitmq/ffi/gen/connection_close.rb +45 -0
  49. data/lib/rabbitmq/ffi/gen/connection_close_ok.rb +28 -0
  50. data/lib/rabbitmq/ffi/gen/connection_open.rb +41 -0
  51. data/lib/rabbitmq/ffi/gen/connection_open_ok.rb +30 -0
  52. data/lib/rabbitmq/ffi/gen/connection_secure.rb +30 -0
  53. data/lib/rabbitmq/ffi/gen/connection_secure_ok.rb +30 -0
  54. data/lib/rabbitmq/ffi/gen/connection_start.rb +48 -0
  55. data/lib/rabbitmq/ffi/gen/connection_start_ok.rb +46 -0
  56. data/lib/rabbitmq/ffi/gen/connection_tune.rb +39 -0
  57. data/lib/rabbitmq/ffi/gen/connection_tune_ok.rb +39 -0
  58. data/lib/rabbitmq/ffi/gen/connection_unblocked.rb +28 -0
  59. data/lib/rabbitmq/ffi/gen/exchange_bind.rb +52 -0
  60. data/lib/rabbitmq/ffi/gen/exchange_bind_ok.rb +28 -0
  61. data/lib/rabbitmq/ffi/gen/exchange_declare.rb +60 -0
  62. data/lib/rabbitmq/ffi/gen/exchange_declare_ok.rb +28 -0
  63. data/lib/rabbitmq/ffi/gen/exchange_delete.rb +43 -0
  64. data/lib/rabbitmq/ffi/gen/exchange_delete_ok.rb +28 -0
  65. data/lib/rabbitmq/ffi/gen/exchange_unbind.rb +52 -0
  66. data/lib/rabbitmq/ffi/gen/exchange_unbind_ok.rb +28 -0
  67. data/lib/rabbitmq/ffi/gen/queue_bind.rb +52 -0
  68. data/lib/rabbitmq/ffi/gen/queue_bind_ok.rb +28 -0
  69. data/lib/rabbitmq/ffi/gen/queue_declare.rb +56 -0
  70. data/lib/rabbitmq/ffi/gen/queue_declare_ok.rb +40 -0
  71. data/lib/rabbitmq/ffi/gen/queue_delete.rb +46 -0
  72. data/lib/rabbitmq/ffi/gen/queue_delete_ok.rb +29 -0
  73. data/lib/rabbitmq/ffi/gen/queue_purge.rb +40 -0
  74. data/lib/rabbitmq/ffi/gen/queue_purge_ok.rb +29 -0
  75. data/lib/rabbitmq/ffi/gen/queue_unbind.rb +49 -0
  76. data/lib/rabbitmq/ffi/gen/queue_unbind_ok.rb +28 -0
  77. data/lib/rabbitmq/ffi/gen/tx_commit.rb +28 -0
  78. data/lib/rabbitmq/ffi/gen/tx_commit_ok.rb +28 -0
  79. data/lib/rabbitmq/ffi/gen/tx_rollback.rb +28 -0
  80. data/lib/rabbitmq/ffi/gen/tx_rollback_ok.rb +28 -0
  81. data/lib/rabbitmq/ffi/gen/tx_select.rb +28 -0
  82. data/lib/rabbitmq/ffi/gen/tx_select_ok.rb +28 -0
  83. metadata +79 -2
@@ -0,0 +1,41 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionOpen < ::FFI::Struct
5
+ layout(
6
+ :virtual_host, Bytes,
7
+ :capabilities, Bytes,
8
+ :insist, Boolean
9
+ )
10
+
11
+ def self.id
12
+ :connection_open
13
+ end
14
+
15
+ def id
16
+ :connection_open
17
+ end
18
+
19
+ def apply(virtual_host: nil, capabilities: nil, insist: nil)
20
+ self[:virtual_host] = Bytes.from_s(virtual_host.to_s) if virtual_host
21
+ self[:capabilities] = Bytes.from_s(capabilities.to_s) if capabilities
22
+ self[:insist] = insist unless insist.nil?
23
+ self
24
+ end
25
+
26
+ def to_h(free=false)
27
+ {
28
+ virtual_host: self[:virtual_host].to_s(free),
29
+ capabilities: self[:capabilities].to_s(free),
30
+ insist: self[:insist]
31
+ }
32
+ end
33
+
34
+ def free!
35
+ self[:virtual_host].free!
36
+ self[:capabilities].free!
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionOpenOk < ::FFI::Struct
5
+ layout(:known_hosts, Bytes)
6
+
7
+ def self.id
8
+ :connection_open_ok
9
+ end
10
+
11
+ def id
12
+ :connection_open_ok
13
+ end
14
+
15
+ def apply(known_hosts: nil)
16
+ self[:known_hosts] = Bytes.from_s(known_hosts.to_s) if known_hosts
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {known_hosts: self[:known_hosts].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:known_hosts].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionSecure < ::FFI::Struct
5
+ layout(:challenge, Bytes)
6
+
7
+ def self.id
8
+ :connection_secure
9
+ end
10
+
11
+ def id
12
+ :connection_secure
13
+ end
14
+
15
+ def apply(challenge: nil)
16
+ self[:challenge] = Bytes.from_s(challenge.to_s) if challenge
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {challenge: self[:challenge].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:challenge].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionSecureOk < ::FFI::Struct
5
+ layout(:response, Bytes)
6
+
7
+ def self.id
8
+ :connection_secure_ok
9
+ end
10
+
11
+ def id
12
+ :connection_secure_ok
13
+ end
14
+
15
+ def apply(response: nil)
16
+ self[:response] = Bytes.from_s(response.to_s) if response
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {response: self[:response].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:response].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,48 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionStart < ::FFI::Struct
5
+ layout(
6
+ :version_major, :uint8,
7
+ :version_minor, :uint8,
8
+ :server_properties, Table,
9
+ :mechanisms, Bytes,
10
+ :locales, Bytes
11
+ )
12
+
13
+ def self.id
14
+ :connection_start
15
+ end
16
+
17
+ def id
18
+ :connection_start
19
+ end
20
+
21
+ def apply(version_major: nil, version_minor: nil, server_properties: nil, mechanisms: nil, locales: nil)
22
+ self[:version_major] = Integer(version_major) if version_major
23
+ self[:version_minor] = Integer(version_minor) if version_minor
24
+ self[:server_properties] = Table.from(server_properties) if server_properties
25
+ self[:mechanisms] = Bytes.from_s(mechanisms.to_s) if mechanisms
26
+ self[:locales] = Bytes.from_s(locales.to_s) if locales
27
+ self
28
+ end
29
+
30
+ def to_h(free=false)
31
+ {
32
+ version_major: self[:version_major],
33
+ version_minor: self[:version_minor],
34
+ server_properties: self[:server_properties].to_h(free),
35
+ mechanisms: self[:mechanisms].to_s(free),
36
+ locales: self[:locales].to_s(free)
37
+ }
38
+ end
39
+
40
+ def free!
41
+ self[:server_properties].free!
42
+ self[:mechanisms].free!
43
+ self[:locales].free!
44
+ end
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,46 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionStartOk < ::FFI::Struct
5
+ layout(
6
+ :client_properties, Table,
7
+ :mechanism, Bytes,
8
+ :response, Bytes,
9
+ :locale, Bytes
10
+ )
11
+
12
+ def self.id
13
+ :connection_start_ok
14
+ end
15
+
16
+ def id
17
+ :connection_start_ok
18
+ end
19
+
20
+ def apply(client_properties: nil, mechanism: nil, response: nil, locale: nil)
21
+ self[:client_properties] = Table.from(client_properties) if client_properties
22
+ self[:mechanism] = Bytes.from_s(mechanism.to_s) if mechanism
23
+ self[:response] = Bytes.from_s(response.to_s) if response
24
+ self[:locale] = Bytes.from_s(locale.to_s) if locale
25
+ self
26
+ end
27
+
28
+ def to_h(free=false)
29
+ {
30
+ client_properties: self[:client_properties].to_h(free),
31
+ mechanism: self[:mechanism].to_s(free),
32
+ response: self[:response].to_s(free),
33
+ locale: self[:locale].to_s(free)
34
+ }
35
+ end
36
+
37
+ def free!
38
+ self[:client_properties].free!
39
+ self[:mechanism].free!
40
+ self[:response].free!
41
+ self[:locale].free!
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,39 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionTune < ::FFI::Struct
5
+ layout(
6
+ :channel_max, :uint16,
7
+ :frame_max, :uint32,
8
+ :heartbeat, :uint16
9
+ )
10
+
11
+ def self.id
12
+ :connection_tune
13
+ end
14
+
15
+ def id
16
+ :connection_tune
17
+ end
18
+
19
+ def apply(channel_max: nil, frame_max: nil, heartbeat: nil)
20
+ self[:channel_max] = Integer(channel_max) if channel_max
21
+ self[:frame_max] = Integer(frame_max) if frame_max
22
+ self[:heartbeat] = Integer(heartbeat) if heartbeat
23
+ self
24
+ end
25
+
26
+ def to_h(free=false)
27
+ {
28
+ channel_max: self[:channel_max],
29
+ frame_max: self[:frame_max],
30
+ heartbeat: self[:heartbeat]
31
+ }
32
+ end
33
+
34
+ def free!
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionTuneOk < ::FFI::Struct
5
+ layout(
6
+ :channel_max, :uint16,
7
+ :frame_max, :uint32,
8
+ :heartbeat, :uint16
9
+ )
10
+
11
+ def self.id
12
+ :connection_tune_ok
13
+ end
14
+
15
+ def id
16
+ :connection_tune_ok
17
+ end
18
+
19
+ def apply(channel_max: nil, frame_max: nil, heartbeat: nil)
20
+ self[:channel_max] = Integer(channel_max) if channel_max
21
+ self[:frame_max] = Integer(frame_max) if frame_max
22
+ self[:heartbeat] = Integer(heartbeat) if heartbeat
23
+ self
24
+ end
25
+
26
+ def to_h(free=false)
27
+ {
28
+ channel_max: self[:channel_max],
29
+ frame_max: self[:frame_max],
30
+ heartbeat: self[:heartbeat]
31
+ }
32
+ end
33
+
34
+ def free!
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionUnblocked < ::FFI::Struct
5
+ layout(:dummy, :char)
6
+
7
+ def self.id
8
+ :connection_unblocked
9
+ end
10
+
11
+ def id
12
+ :connection_unblocked
13
+ end
14
+
15
+ def apply(dummy: nil)
16
+ self
17
+ end
18
+
19
+ def to_h(free=false)
20
+ {}
21
+ end
22
+
23
+ def free!
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,52 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ExchangeBind < ::FFI::Struct
5
+ layout(
6
+ :ticket, :uint16,
7
+ :destination, Bytes,
8
+ :source, Bytes,
9
+ :routing_key, Bytes,
10
+ :nowait, Boolean,
11
+ :arguments, Table
12
+ )
13
+
14
+ def self.id
15
+ :exchange_bind
16
+ end
17
+
18
+ def id
19
+ :exchange_bind
20
+ end
21
+
22
+ def apply(ticket: nil, destination: nil, source: nil, routing_key: nil, nowait: nil, arguments: nil)
23
+ self[:ticket] = Integer(ticket) if ticket
24
+ self[:destination] = Bytes.from_s(destination.to_s) if destination
25
+ self[:source] = Bytes.from_s(source.to_s) if source
26
+ self[:routing_key] = Bytes.from_s(routing_key.to_s) if routing_key
27
+ self[:nowait] = nowait unless nowait.nil?
28
+ self[:arguments] = Table.from(arguments) if arguments
29
+ self
30
+ end
31
+
32
+ def to_h(free=false)
33
+ {
34
+ ticket: self[:ticket],
35
+ destination: self[:destination].to_s(free),
36
+ source: self[:source].to_s(free),
37
+ routing_key: self[:routing_key].to_s(free),
38
+ nowait: self[:nowait],
39
+ arguments: self[:arguments].to_h(free)
40
+ }
41
+ end
42
+
43
+ def free!
44
+ self[:destination].free!
45
+ self[:source].free!
46
+ self[:routing_key].free!
47
+ self[:arguments].free!
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ExchangeBindOk < ::FFI::Struct
5
+ layout(:dummy, :char)
6
+
7
+ def self.id
8
+ :exchange_bind_ok
9
+ end
10
+
11
+ def id
12
+ :exchange_bind_ok
13
+ end
14
+
15
+ def apply(dummy: nil)
16
+ self
17
+ end
18
+
19
+ def to_h(free=false)
20
+ {}
21
+ end
22
+
23
+ def free!
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,60 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ExchangeDeclare < ::FFI::Struct
5
+ layout(
6
+ :ticket, :uint16,
7
+ :exchange, Bytes,
8
+ :type, Bytes,
9
+ :passive, Boolean,
10
+ :durable, Boolean,
11
+ :auto_delete, Boolean,
12
+ :internal, Boolean,
13
+ :nowait, Boolean,
14
+ :arguments, Table
15
+ )
16
+
17
+ def self.id
18
+ :exchange_declare
19
+ end
20
+
21
+ def id
22
+ :exchange_declare
23
+ end
24
+
25
+ def apply(ticket: nil, exchange: nil, type: nil, passive: nil, durable: nil, auto_delete: nil, internal: nil, nowait: nil, arguments: nil)
26
+ self[:ticket] = Integer(ticket) if ticket
27
+ self[:exchange] = Bytes.from_s(exchange.to_s) if exchange
28
+ self[:type] = Bytes.from_s(type.to_s) if type
29
+ self[:passive] = passive unless passive.nil?
30
+ self[:durable] = durable unless durable.nil?
31
+ self[:auto_delete] = auto_delete unless auto_delete.nil?
32
+ self[:internal] = internal unless internal.nil?
33
+ self[:nowait] = nowait unless nowait.nil?
34
+ self[:arguments] = Table.from(arguments) if arguments
35
+ self
36
+ end
37
+
38
+ def to_h(free=false)
39
+ {
40
+ ticket: self[:ticket],
41
+ exchange: self[:exchange].to_s(free),
42
+ type: self[:type].to_s(free),
43
+ passive: self[:passive],
44
+ durable: self[:durable],
45
+ auto_delete: self[:auto_delete],
46
+ internal: self[:internal],
47
+ nowait: self[:nowait],
48
+ arguments: self[:arguments].to_h(free)
49
+ }
50
+ end
51
+
52
+ def free!
53
+ self[:exchange].free!
54
+ self[:type].free!
55
+ self[:arguments].free!
56
+ end
57
+
58
+ end
59
+ end
60
+ end