rabbitmq 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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