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,36 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class BasicReject < ::FFI::Struct
5
+ layout(
6
+ :delivery_tag, :uint64,
7
+ :requeue, Boolean
8
+ )
9
+
10
+ def self.id
11
+ :basic_reject
12
+ end
13
+
14
+ def id
15
+ :basic_reject
16
+ end
17
+
18
+ def apply(delivery_tag: nil, requeue: nil)
19
+ self[:delivery_tag] = Integer(delivery_tag) if delivery_tag
20
+ self[:requeue] = requeue unless requeue.nil?
21
+ self
22
+ end
23
+
24
+ def to_h(free=false)
25
+ {
26
+ delivery_tag: self[:delivery_tag],
27
+ requeue: self[:requeue]
28
+ }
29
+ end
30
+
31
+ def free!
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,45 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class BasicReturn < ::FFI::Struct
5
+ layout(
6
+ :reply_code, :uint16,
7
+ :reply_text, Bytes,
8
+ :exchange, Bytes,
9
+ :routing_key, Bytes
10
+ )
11
+
12
+ def self.id
13
+ :basic_return
14
+ end
15
+
16
+ def id
17
+ :basic_return
18
+ end
19
+
20
+ def apply(reply_code: nil, reply_text: nil, exchange: nil, routing_key: nil)
21
+ self[:reply_code] = Integer(reply_code) if reply_code
22
+ self[:reply_text] = Bytes.from_s(reply_text.to_s) if reply_text
23
+ self[:exchange] = Bytes.from_s(exchange.to_s) if exchange
24
+ self[:routing_key] = Bytes.from_s(routing_key.to_s) if routing_key
25
+ self
26
+ end
27
+
28
+ def to_h(free=false)
29
+ {
30
+ reply_code: self[:reply_code],
31
+ reply_text: self[:reply_text].to_s(free),
32
+ exchange: self[:exchange].to_s(free),
33
+ routing_key: self[:routing_key].to_s(free)
34
+ }
35
+ end
36
+
37
+ def free!
38
+ self[:reply_text].free!
39
+ self[:exchange].free!
40
+ self[:routing_key].free!
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,45 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelClose < ::FFI::Struct
5
+ layout(
6
+ :reply_code, :uint16,
7
+ :reply_text, Bytes,
8
+ :class_id, :uint16,
9
+ :method_id, :uint16
10
+ )
11
+
12
+ def self.id
13
+ :channel_close
14
+ end
15
+
16
+ def id
17
+ :channel_close
18
+ end
19
+
20
+ def apply(reply_code: nil, reply_text: nil, method: nil)
21
+ if method
22
+ method_id = FFI::MethodNumber[method.to_sym]
23
+ self[:class_id] = method_id >> 16
24
+ self[:method_id] = method_id & 0xFFFF
25
+ end
26
+ self[:reply_code] = Integer(reply_code) if reply_code
27
+ self[:reply_text] = Bytes.from_s(reply_text.to_s) if reply_text
28
+ self
29
+ end
30
+
31
+ def to_h(free=false)
32
+ {
33
+ reply_code: self[:reply_code],
34
+ reply_text: self[:reply_text].to_s(free),
35
+ method: FFI::MethodNumber[self[:method_id] + (self[:class_id] << 16)]
36
+ }
37
+ end
38
+
39
+ def free!
40
+ self[:reply_text].free!
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelCloseOk < ::FFI::Struct
5
+ layout(:dummy, :char)
6
+
7
+ def self.id
8
+ :channel_close_ok
9
+ end
10
+
11
+ def id
12
+ :channel_close_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,29 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelFlow < ::FFI::Struct
5
+ layout(:active, Boolean)
6
+
7
+ def self.id
8
+ :channel_flow
9
+ end
10
+
11
+ def id
12
+ :channel_flow
13
+ end
14
+
15
+ def apply(active: nil)
16
+ self[:active] = active unless active.nil?
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {active: self[:active]}
22
+ end
23
+
24
+ def free!
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelFlowOk < ::FFI::Struct
5
+ layout(:active, Boolean)
6
+
7
+ def self.id
8
+ :channel_flow_ok
9
+ end
10
+
11
+ def id
12
+ :channel_flow_ok
13
+ end
14
+
15
+ def apply(active: nil)
16
+ self[:active] = active unless active.nil?
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {active: self[:active]}
22
+ end
23
+
24
+ def free!
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelOpen < ::FFI::Struct
5
+ layout(:out_of_band, Bytes)
6
+
7
+ def self.id
8
+ :channel_open
9
+ end
10
+
11
+ def id
12
+ :channel_open
13
+ end
14
+
15
+ def apply(out_of_band: nil)
16
+ self[:out_of_band] = Bytes.from_s(out_of_band.to_s) if out_of_band
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {out_of_band: self[:out_of_band].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:out_of_band].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ChannelOpenOk < ::FFI::Struct
5
+ layout(:channel_id, Bytes)
6
+
7
+ def self.id
8
+ :channel_open_ok
9
+ end
10
+
11
+ def id
12
+ :channel_open_ok
13
+ end
14
+
15
+ def apply(channel_id: nil)
16
+ self[:channel_id] = Bytes.from_s(channel_id.to_s) if channel_id
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {channel_id: self[:channel_id].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:channel_id].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConfirmSelect < ::FFI::Struct
5
+ layout(:nowait, Boolean)
6
+
7
+ def self.id
8
+ :confirm_select
9
+ end
10
+
11
+ def id
12
+ :confirm_select
13
+ end
14
+
15
+ def apply(nowait: nil)
16
+ self[:nowait] = nowait unless nowait.nil?
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {nowait: self[:nowait]}
22
+ end
23
+
24
+ def free!
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConfirmSelectOk < ::FFI::Struct
5
+ layout(:dummy, :char)
6
+
7
+ def self.id
8
+ :confirm_select_ok
9
+ end
10
+
11
+ def id
12
+ :confirm_select_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,30 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionBlocked < ::FFI::Struct
5
+ layout(:reason, Bytes)
6
+
7
+ def self.id
8
+ :connection_blocked
9
+ end
10
+
11
+ def id
12
+ :connection_blocked
13
+ end
14
+
15
+ def apply(reason: nil)
16
+ self[:reason] = Bytes.from_s(reason.to_s) if reason
17
+ self
18
+ end
19
+
20
+ def to_h(free=false)
21
+ {reason: self[:reason].to_s(free)}
22
+ end
23
+
24
+ def free!
25
+ self[:reason].free!
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,45 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionClose < ::FFI::Struct
5
+ layout(
6
+ :reply_code, :uint16,
7
+ :reply_text, Bytes,
8
+ :class_id, :uint16,
9
+ :method_id, :uint16
10
+ )
11
+
12
+ def self.id
13
+ :connection_close
14
+ end
15
+
16
+ def id
17
+ :connection_close
18
+ end
19
+
20
+ def apply(reply_code: nil, reply_text: nil, method: nil)
21
+ if method
22
+ method_id = FFI::MethodNumber[method.to_sym]
23
+ self[:class_id] = method_id >> 16
24
+ self[:method_id] = method_id & 0xFFFF
25
+ end
26
+ self[:reply_code] = Integer(reply_code) if reply_code
27
+ self[:reply_text] = Bytes.from_s(reply_text.to_s) if reply_text
28
+ self
29
+ end
30
+
31
+ def to_h(free=false)
32
+ {
33
+ reply_code: self[:reply_code],
34
+ reply_text: self[:reply_text].to_s(free),
35
+ method: FFI::MethodNumber[self[:method_id] + (self[:class_id] << 16)]
36
+ }
37
+ end
38
+
39
+ def free!
40
+ self[:reply_text].free!
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,28 @@
1
+
2
+ module RabbitMQ
3
+ module FFI
4
+ class ConnectionCloseOk < ::FFI::Struct
5
+ layout(:dummy, :char)
6
+
7
+ def self.id
8
+ :connection_close_ok
9
+ end
10
+
11
+ def id
12
+ :connection_close_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