famoseagle-carrot 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Amos Elliston
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -4,17 +4,27 @@ A synchronous amqp client. Based on Aman's amqp client:
4
4
 
5
5
  [http://github.com/tmm1/amqp/tree/master] (http://github.com/tmm1/amqp/tree/master)
6
6
 
7
+ ## Motivation
8
+
9
+ This client does not use eventmachine so no background thread necessary. As a result, it is much easier to use from script/console and Passenger. It also solves the problem of buffering messages and ack responses. For more details see [this thread] (http://groups.google.com/group/ruby-amqp/browse_thread/thread/fdae324a0ebb1961/fa185fdce1841b68).
10
+
11
+ There is currently no way to prevent buffering using eventmachine. Support for prefetch is still unreliable.
12
+
13
+
7
14
  ## Example
8
15
 
9
- q = Carrot.queue('name', :durable => true, :host => 'q1.rabbitmq.com')
10
- 100.times do
11
- q.publish('foo')
16
+ require 'carrot'
17
+
18
+ q = Carrot.queue('name')
19
+ 10.times do |num|
20
+ q.publish(num.to_s)
12
21
  end
13
22
 
14
- pp :count, q.message_count
23
+ puts "Queued #{q.message_count} messages"
24
+ puts
15
25
 
16
26
  while msg = q.pop(:ack => true)
17
- puts msg
27
+ puts "Popping: #{msg}"
18
28
  q.ack
19
29
  end
20
30
  Carrot.stop
@@ -0,0 +1,40 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rcov/rcovtask'
5
+
6
+ begin
7
+ require 'jeweler'
8
+ Jeweler::Tasks.new do |s|
9
+ s.name = "carrot"
10
+ s.summary = %Q{TODO}
11
+ s.email = "amos@geni.com"
12
+ s.homepage = "http://github.com/famoseagle/carrot"
13
+ s.description = "TODO"
14
+ s.authors = ["Amos Elliston"]
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
+ end
19
+
20
+ Rake::TestTask.new do |t|
21
+ t.libs << 'lib'
22
+ t.pattern = 'test/**/*_test.rb'
23
+ t.verbose = false
24
+ end
25
+
26
+ Rake::RDocTask.new do |rdoc|
27
+ rdoc.rdoc_dir = 'rdoc'
28
+ rdoc.title = 'carrot'
29
+ rdoc.options << '--line-numbers' << '--inline-source'
30
+ rdoc.rdoc_files.include('README*')
31
+ rdoc.rdoc_files.include('lib/**/*.rb')
32
+ end
33
+
34
+ Rcov::RcovTask.new do |t|
35
+ t.libs << 'test'
36
+ t.test_files = FileList['test/**/*_test.rb']
37
+ t.verbose = true
38
+ end
39
+
40
+ task :default => :test
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 0
3
2
  :major: 0
4
- :minor: 6
3
+ :minor: 7
4
+ :patch: 0
@@ -0,0 +1,58 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{carrot}
3
+ s.version = "0.7.0"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Amos Elliston"]
7
+ s.date = %q{2009-08-26}
8
+ s.description = %q{TODO}
9
+ s.email = %q{amos@geni.com}
10
+ s.extra_rdoc_files = [
11
+ "LICENSE",
12
+ "README.markdown"
13
+ ]
14
+ s.files = [
15
+ ".gitignore",
16
+ "LICENSE",
17
+ "README.markdown",
18
+ "Rakefile",
19
+ "VERSION.yml",
20
+ "carrot.gemspec",
21
+ "lib/amqp/buffer.rb",
22
+ "lib/amqp/exchange.rb",
23
+ "lib/amqp/frame.rb",
24
+ "lib/amqp/header.rb",
25
+ "lib/amqp/protocol.rb",
26
+ "lib/amqp/queue.rb",
27
+ "lib/amqp/server.rb",
28
+ "lib/amqp/spec.rb",
29
+ "lib/carrot.rb",
30
+ "lib/examples/simple_pop.rb",
31
+ "protocol/amqp-0.8.json",
32
+ "protocol/amqp-0.8.xml",
33
+ "protocol/codegen.rb",
34
+ "protocol/doc.txt",
35
+ "test/carrot_test.rb",
36
+ "test/test_helper.rb"
37
+ ]
38
+ s.has_rdoc = true
39
+ s.homepage = %q{http://github.com/famoseagle/carrot}
40
+ s.rdoc_options = ["--charset=UTF-8"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = %q{1.2.0}
43
+ s.summary = %q{TODO}
44
+ s.test_files = [
45
+ "test/carrot_test.rb",
46
+ "test/test_helper.rb"
47
+ ]
48
+
49
+ if s.respond_to? :specification_version then
50
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
51
+ s.specification_version = 2
52
+
53
+ if current_version >= 3 then
54
+ else
55
+ end
56
+ else
57
+ end
58
+ end
@@ -24,8 +24,11 @@ module Carrot::AMQP
24
24
  self.delivery_tag = method.delivery_tag
25
25
 
26
26
  header = server.next_payload
27
- msg = server.next_payload
28
- raise 'unexpected length' if msg.length < header.size
27
+
28
+ msg = ''
29
+ while msg.length < header.size
30
+ msg << server.next_payload
31
+ end
29
32
 
30
33
  msg
31
34
  end
@@ -106,6 +106,7 @@ module Carrot::AMQP
106
106
  end
107
107
  @status = 'CONNECTED'
108
108
  rescue SocketError, SystemCallError, IOError, Timeout::Error => e
109
+ msg = e.message << " - #{@host}:#{@port}"
109
110
  raise ServerDown, e.message
110
111
  ensure
111
112
  mutex.unlock if multithread?
@@ -0,0 +1,617 @@
1
+ /*
2
+ Copyright (c) 2008 John Leuner
3
+
4
+ Permission is hereby granted, free of charge, to any person
5
+ obtaining a copy of this file (the "Software"), to deal in the
6
+ Software without restriction, including without limitation the
7
+ rights to use, copy, modify, merge, publish, distribute,
8
+ sublicense, and/or sell copies of the Software, and to permit
9
+ persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ Class information entered from amqp_xml0-8.pdf and domain types from amqp-xml-doc0-9.pdf
25
+
26
+ b3cb053f15e7b98808c0ccc67f23cb3e amqp_xml0-8.pdf
27
+ http://www.twiststandards.org/index.php?option=com_docman&task=cat_view&gid=28&&Itemid=90
28
+ 8444db91e2949dbecfb2585e9eef6d64 amqp-xml-doc0-9.pdf
29
+ https://jira.amqp.org/confluence/download/attachments/720900/amqp-xml-doc0-9.pdf?version=1
30
+ */
31
+
32
+ {
33
+ "name": "AMQP",
34
+ "major-version": 8,
35
+ "minor-version": 0,
36
+ "port": 5672,
37
+
38
+ "domains": [
39
+ ["access-ticket", "short"],
40
+ ["bit", "bit"],
41
+ ["channel-id", "longstr"],
42
+ ["class-id", "short"],
43
+ ["consumer-tag", "shortstr"],
44
+ ["delivery-tag", "longlong"],
45
+ ["destination", "shortstr"],
46
+ ["duration", "longlong"],
47
+ ["exchange-name", "shortstr"],
48
+ ["known-hosts", "shortstr"],
49
+ ["long", "long"],
50
+ ["longlong", "longlong"],
51
+ ["longstr", "longstr"],
52
+ ["method-id", "short"],
53
+ ["no-ack", "bit"],
54
+ ["no-local", "bit"],
55
+ ["octet", "octet"],
56
+ ["offset", "longlong"],
57
+ ["path", "shortstr"],
58
+ ["peer-properties", "table"],
59
+ ["queue-name", "shortstr"],
60
+ ["redelivered", "bit"],
61
+ ["reference", "longstr"],
62
+ ["reject-code", "short"],
63
+ ["reject-text", "shortstr"],
64
+ ["reply-code", "short"],
65
+ ["reply-text", "shortstr"],
66
+ ["security-token", "longstr"],
67
+ ["short", "short"],
68
+ ["shortstr", "shortstr"],
69
+ ["table", "table"],
70
+ ["timestamp", "timestamp"]
71
+ ],
72
+
73
+ "constants": [
74
+ {"name": "FRAME-METHOD", "value": 1},
75
+ {"name": "FRAME-HEADER", "value": 2},
76
+ {"name": "FRAME-BODY", "value": 3},
77
+ {"name": "FRAME-OOB-METHOD", "value": 4},
78
+ {"name": "FRAME-OOB-HEADER", "value": 5},
79
+ {"name": "FRAME-OOB-BODY", "value": 6},
80
+ {"name": "FRAME-TRACE", "value": 7},
81
+ {"name": "FRAME-HEARTBEAT", "value": 8},
82
+ {"name": "FRAME-MIN-SIZE", "value": 4096},
83
+ {"name": "FRAME-END", "value": 206},
84
+ {"name": "REPLY-SUCCESS", "value": 200},
85
+ {"name": "NOT-DELIVERED", "value": 310, "class": "soft-error"},
86
+ {"name": "CONTENT-TOO-LARGE", "value": 311, "class": "soft-error"},
87
+ {"name": "NO-ROUTE", "value": 312, "class": "soft-error"},
88
+ {"name": "NO-CONSUMERS", "value": 313, "class": "soft-error"},
89
+ {"name": "ACCESS-REFUSED", "value": 403, "class": "soft-error"},
90
+ {"name": "NOT-FOUND", "value": 404, "class": "soft-error"},
91
+ {"name": "RESOURCE-LOCKED", "value": 405, "class": "soft-error"},
92
+ {"name": "PRECONDITION-FAILED", "value": 406, "class": "soft-error"},
93
+ {"name": "CONNECTION-FORCED", "value": 320, "class": "hard-error"},
94
+ {"name": "INVALID-PATH", "value": 402, "class": "hard-error"},
95
+ {"name": "FRAME-ERROR", "value": 501, "class": "hard-error"},
96
+ {"name": "SYNTAX-ERROR", "value": 502, "class": "hard-error"},
97
+ {"name": "COMMAND-INVALID", "value": 503, "class": "hard-error"},
98
+ {"name": "CHANNEL-ERROR", "value": 504, "class": "hard-error"},
99
+ {"name": "RESOURCE-ERROR", "value": 506, "class": "hard-error"},
100
+ {"name": "NOT-ALLOWED", "value": 530, "class": "hard-error"},
101
+ {"name": "NOT-IMPLEMENTED", "value": 540, "class": "hard-error"},
102
+ {"name": "INTERNAL-ERROR", "value": 541, "class": "hard-error"}
103
+ ],
104
+
105
+ "classes": [
106
+ {
107
+ "id": 10,
108
+ "methods": [{"id": 10,
109
+ "arguments": [{"type": "octet", "name": "version-major"},
110
+ {"type": "octet", "name": "version-minor"},
111
+ {"domain": "peer-properties", "name": "server properties"},
112
+ {"type": "longstr", "name": "mechanisms"},
113
+ {"type": "longstr", "name": "locales"}],
114
+ "name": "start"},
115
+ {"id": 11,
116
+ "arguments": [{"domain": "peer-properties", "name": "client-properties"},
117
+ {"type": "shortstr", "name": "mechanism"},
118
+ {"type": "longstr", "name": "response"},
119
+ {"type": "shortstr", "name": "locale"}],
120
+ "name": "start-ok"},
121
+ {"id": 20,
122
+ "arguments": [{"type": "longstr", "name": "challenge"}],
123
+ "name": "secure"},
124
+ {"id": 21,
125
+ "arguments": [{"type": "longstr", "name": "response"}],
126
+ "name": "secure-ok"},
127
+ {"id": 30,
128
+ "arguments": [{"type": "short", "name": "channel-max"},
129
+ {"type": "long", "name": "frame-max"},
130
+ {"type": "short", "name": "heartbeat"}],
131
+ "name": "tune"},
132
+ {"id": 31,
133
+ "arguments": [{"type": "short", "name": "channel-max"},
134
+ {"type": "long", "name": "frame-max"},
135
+ {"type": "short", "name": "heartbeat"}],
136
+ "name": "tune-ok"},
137
+ {"id": 40,
138
+ "arguments": [{"type": "shortstr", "name": "virtual-host"},
139
+ {"type": "shortstr", "name": "capabilities"},
140
+ {"type": "bit", "name": "insist"}],
141
+ "name": "open"},
142
+ {"id": 41,
143
+ "arguments": [{"type": "shortstr", "name": "known-hosts"}],
144
+ "name": "open-ok"},
145
+ {"id": 50,
146
+ "arguments": [{"type": "shortstr", "name": "host"},
147
+ {"type": "shortstr", "name": "known-hosts"}],
148
+ "name": "redirect"},
149
+ {"id": 60,
150
+ "arguments": [{"type": "short", "name": "reply-code"},
151
+ {"type": "shortstr", "name": "reply-text"},
152
+ {"type": "short", "name": "class-id"},
153
+ {"type": "short", "name": "method-id"}],
154
+ "name": "close"},
155
+ {"id": 61,
156
+ "arguments": [],
157
+ "name": "close-ok"}],
158
+ "name": "connection",
159
+ "properties": []
160
+ },
161
+ {
162
+ "id": 20,
163
+ "methods": [{"id": 10,
164
+ "arguments": [{"type": "shortstr", "name": "out-of-band"}],
165
+ "name": "open"},
166
+ {"id": 11,
167
+ "arguments": [],
168
+ "name": "open-ok"},
169
+ {"id": 20,
170
+ "arguments": [{"type": "bit", "name": "active"}],
171
+ "name": "flow"},
172
+ {"id": 21,
173
+ "arguments": [{"type": "bit", "name": "active"}],
174
+ "name": "flow-ok"},
175
+ {"id": 30,
176
+ "arguments": [{"type": "short", "name": "reply-code"},
177
+ {"type": "shortstr", "name": "reply-text"},
178
+ {"type": "table", "name": "details"}],
179
+ "name": "alert"},
180
+ {"id": 40,
181
+ "arguments": [{"type": "short", "name": "reply-code"},
182
+ {"type": "shortstr", "name": "reply-text"},
183
+ {"type": "short", "name": "class-id"},
184
+ {"type": "short", "name": "method-id"}],
185
+ "name": "close"},
186
+ {"id": 41,
187
+ "arguments": [],
188
+ "name": "close-ok"}],
189
+ "name": "channel"
190
+ },
191
+ {
192
+ "id": 30,
193
+ "methods": [{"id": 10,
194
+ "arguments": [{"type": "shortstr", "name": "realm"},
195
+ {"type": "bit", "name": "exclusive"},
196
+ {"type": "bit", "name": "passive"},
197
+ {"type": "bit", "name": "active"},
198
+ {"type": "bit", "name": "write"},
199
+ {"type": "bit", "name": "read"}],
200
+ "name": "request"},
201
+ {"id": 11,
202
+ "arguments": [{"type": "short", "name": "ticket"}],
203
+ "name": "request-ok"}],
204
+ "name": "access"
205
+ },
206
+ {
207
+ "id": 40,
208
+ "methods": [{"id": 10,
209
+ "arguments": [{"type": "short", "name": "ticket"},
210
+ {"type": "shortstr", "name": "exchange"},
211
+ {"type": "shortstr", "name": "type"},
212
+ {"type": "bit", "name": "passive"},
213
+ {"type": "bit", "name": "durable"},
214
+ {"type": "bit", "name": "auto-delete"},
215
+ {"type": "bit", "name": "internal"},
216
+ {"type": "bit", "name": "nowait"},
217
+ {"type": "table", "name": "arguments"}],
218
+ "name": "declare"},
219
+ {"id": 11,
220
+ "arguments": [],
221
+ "name": "declare-ok"},
222
+ {"id": 20,
223
+ "arguments": [{"type": "short", "name": "ticket"},
224
+ {"type": "shortstr", "name": "exchange"},
225
+ {"type": "bit", "name": "if-unused"},
226
+ {"type": "bit", "name": "nowait"}],
227
+ "name": "delete"},
228
+ {"id": 21,
229
+ "arguments": [],
230
+ "name": "delete-ok"}],
231
+ "name": "exchange"
232
+ },
233
+ {
234
+ "id": 50,
235
+ "methods": [{"id": 10,
236
+ "arguments": [{"type": "short", "name": "ticket"},
237
+ {"type": "shortstr", "name": "queue"},
238
+ {"type": "bit", "name": "passive"},
239
+ {"type": "bit", "name": "durable"},
240
+ {"type": "bit", "name": "exclusive"},
241
+ {"type": "bit", "name": "auto-delete"},
242
+ {"type": "bit", "name": "nowait"},
243
+ {"type": "table", "name": "arguments"}],
244
+ "name": "declare"},
245
+ {"id": 11,
246
+ "arguments": [{"type": "shortstr", "name": "queue"},
247
+ {"type": "long", "name": "message-count"},
248
+ {"type": "long", "name": "consumer-count"}],
249
+ "name": "declare-ok"},
250
+ {"id": 20,
251
+ "arguments": [{"type": "short", "name": "ticket"},
252
+ {"type": "shortstr", "name": "queue"},
253
+ {"type": "shortstr", "name": "exchange"},
254
+ {"type": "shortstr", "name": "routing-key"},
255
+ {"type": "bit", "name": "nowait"},
256
+ {"type": "table", "name": "arguments"}],
257
+ "name": "bind"},
258
+ {"id": 21,
259
+ "arguments": [],
260
+ "name": "bind-ok"},
261
+ {"id": 30,
262
+ "arguments": [{"type": "short", "name": "ticket"},
263
+ {"type": "shortstr", "name": "queue"},
264
+ {"type": "bit", "name": "nowait"}],
265
+ "name": "purge"},
266
+ {"id": 31,
267
+ "arguments": [{"type": "long", "name": "message-count"}],
268
+ "name": "purge-ok"},
269
+ {"id": 40,
270
+ "arguments": [{"type": "short", "name": "ticket"},
271
+ {"type": "shortstr", "name": "queue"},
272
+ {"type": "bit", "name": "if-unused"},
273
+ {"type": "bit", "name": "if-empty"},
274
+ {"type": "bit", "name": "nowait"}],
275
+ "name": "delete"},
276
+ {"id": 41,
277
+ "arguments": [{"type": "long", "name": "message-count"}],
278
+ "name": "delete-ok"},
279
+ {"id": 50,
280
+ "arguments": [{"type": "short", "name": "ticket"},
281
+ {"type": "shortstr", "name": "queue"},
282
+ {"type": "shortstr", "name": "exchange"},
283
+ {"type": "shortstr", "name": "routing-key"},
284
+ {"type": "table", "name": "arguments"}],
285
+ "name": "unbind"},
286
+ {"id": 51,
287
+ "arguments": [],
288
+ "name": "unbind-ok"}
289
+ ],
290
+ "name": "queue"
291
+ },
292
+ {
293
+ "id": 60,
294
+ "methods": [{"id": 10,
295
+ "arguments": [{"type": "long", "name": "prefetch-size"},
296
+ {"type": "short", "name": "prefetch-count"},
297
+ {"type": "bit", "name": "global"}],
298
+ "name": "qos"},
299
+ {"id": 11,
300
+ "arguments": [],
301
+ "name": "qos-ok"},
302
+ {"id": 20,
303
+ "arguments": [{"domain": "access-ticket", "name": "ticket"},
304
+ {"domain": "queue-name", "name": "queue"},
305
+ {"type": "shortstr", "name": "consumer-tag"},
306
+ {"type": "bit", "name": "no-local"},
307
+ {"type": "bit", "name": "no-ack"},
308
+ {"type": "bit", "name": "exclusive"},
309
+ {"type": "bit", "name": "nowait"}],
310
+ "name": "consume"},
311
+ {"id": 21,
312
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
313
+ "name": "consume-ok"},
314
+ {"id": 30,
315
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
316
+ {"type": "bit", "name": "nowait"}],
317
+ "name": "cancel"},
318
+ {"id": 31,
319
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
320
+ "name": "cancel-ok"},
321
+ {"content": true,
322
+ "id": 40,
323
+ "arguments": [{"type": "short", "name": "ticket"},
324
+ {"type": "shortstr", "name": "exchange"},
325
+ {"type": "shortstr", "name": "routing-key"},
326
+ {"type": "bit", "name": "mandatory"},
327
+ {"type": "bit", "name": "immediate"}],
328
+ "name": "publish"},
329
+ {"content": true,
330
+ "id": 50,
331
+ "arguments": [{"type": "short", "name": "reply-code"},
332
+ {"type": "shortstr", "name": "reply-text"},
333
+ {"type": "shortstr", "name": "exchange"},
334
+ {"type": "shortstr", "name": "routing-key"}],
335
+ "name": "return"},
336
+ {"content": true,
337
+ "id": 60,
338
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
339
+ {"type": "longlong", "name": "delivery-tag"},
340
+ {"type": "bit", "name": "redelivered"},
341
+ {"type": "shortstr", "name": "exchange"},
342
+ {"type": "shortstr", "name": "routing-key"}],
343
+ "name": "deliver"},
344
+ {"id": 70,
345
+ "arguments": [{"type": "short", "name": "ticket"},
346
+ {"type": "shortstr", "name": "queue"},
347
+ {"type": "bit", "name": "no-ack"}],
348
+ "name": "get"},
349
+ {"content": true,
350
+ "id": 71,
351
+ "arguments": [{"type": "longlong", "name": "delivery-tag"},
352
+ {"type": "bit", "name": "redelivered"},
353
+ {"type": "shortstr", "name": "exchange"},
354
+ {"type": "shortstr", "name": "routing-key"},
355
+ {"type": "long", "name": "message-count"}],
356
+ "name": "get-ok"},
357
+ {"id": 72,
358
+ "arguments": [{"type": "shortstr", "name": "cluster-id"}],
359
+ "name": "get-empty"},
360
+ {"id": 80,
361
+ "arguments": [{"type": "longlong", "name": "delivery-tag"},
362
+ {"type": "bit", "name": "multiple"}],
363
+ "name": "ack"},
364
+ {"id": 90,
365
+ "arguments": [{"type": "longlong", "name": "delivery-tag"},
366
+ {"type": "bit", "name": "requeue"}],
367
+ "name": "reject"},
368
+ {"id": 100,
369
+ "arguments": [{"type": "bit", "name": "requeue"}],
370
+ "name": "recover"}],
371
+ "name": "basic",
372
+ "properties": [{"type": "shortstr", "name": "content-type"},
373
+ {"type": "shortstr", "name": "content-encoding"},
374
+ {"type": "table", "name": "headers"},
375
+ {"type": "octet", "name": "delivery-mode"},
376
+ {"type": "octet", "name": "priority"},
377
+ {"type": "shortstr", "name": "correlation-id"},
378
+ {"type": "shortstr", "name": "reply-to"},
379
+ {"type": "shortstr", "name": "expiration"},
380
+ {"type": "shortstr", "name": "message-id"},
381
+ {"type": "timestamp", "name": "timestamp"},
382
+ {"type": "shortstr", "name": "type"},
383
+ {"type": "shortstr", "name": "user-id"},
384
+ {"type": "shortstr", "name": "app-id"},
385
+ {"type": "shortstr", "name": "cluster-id"}]
386
+ },
387
+ {
388
+ "id": 70,
389
+ "methods": [{"id": 10,
390
+ "arguments": [{"type": "long", "name": "prefetch-size"},
391
+ {"type": "short", "name": "prefetch-count"},
392
+ {"type": "bit", "name": "global"}],
393
+ "name": "qos"},
394
+ {"id": 11,
395
+ "arguments": [],
396
+ "name": "qos-ok"},
397
+ {"id": 20,
398
+ "arguments": [{"type": "short", "name": "ticket"},
399
+ {"type": "shortstr", "name": "queue"},
400
+ {"type": "shortstr", "name": "consumer-tag"},
401
+ {"type": "bit", "name": "no-local"},
402
+ {"type": "bit", "name": "no-ack"},
403
+ {"type": "bit", "name": "exclusive"},
404
+ {"type": "bit", "name": "nowait"}],
405
+ "name": "consume"},
406
+ {"id": 21,
407
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
408
+ "name": "consume-ok"},
409
+ {"id": 30,
410
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
411
+ {"type": "bit", "name": "nowait"}],
412
+ "name": "cancel"},
413
+ {"id": 31,
414
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
415
+ "name": "cancel-ok"},
416
+ {"id": 40,
417
+ "arguments": [{"type": "shortstr", "name": "identifier"},
418
+ {"type": "longlong", "name": "content-size"}],
419
+ "name": "open"},
420
+ {"id": 41,
421
+ "arguments": [{"type": "longlong", "name": "staged-size"}],
422
+ "name": "open-ok"},
423
+ {"content": true,
424
+ "id": 50,
425
+ "arguments": [],
426
+ "name": "stage"},
427
+ {"id": 60,
428
+ "arguments": [{"type": "short", "name": "ticket"},
429
+ {"type": "shortstr", "name": "exchange"},
430
+ {"type": "shortstr", "name": "routing-key"},
431
+ {"type": "bit", "name": "mandatory"},
432
+ {"type": "bit", "name": "immediate"},
433
+ {"type": "shortstr", "name": "identifier"}],
434
+ "name": "publish"},
435
+ {"content": true,
436
+ "id": 70,
437
+ "arguments": [{"type": "short", "name": "reply-code"},
438
+ {"type": "shortstr", "name": "reply-text"},
439
+ {"type": "shortstr", "name": "exchange"},
440
+ {"type": "shortstr", "name": "routing-key"}],
441
+ "name": "return"},
442
+ {"id": 80,
443
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
444
+ {"type": "longlong", "name": "delivery-tag"},
445
+ {"type": "bit", "name": "redelivered"},
446
+ {"type": "shortstr", "name": "exchange"},
447
+ {"type": "shortstr", "name": "routing-key"},
448
+ {"type": "shortstr", "name": "identifier"}],
449
+ "name": "deliver"},
450
+ {"id": 90,
451
+ "arguments": [{"type": "longlong", "name": "delivery-tag"},
452
+ {"type": "bit", "name": "multiple"}],
453
+ "name": "ack"},
454
+ {"id": 100,
455
+ "arguments": [{"type": "longlong", "name": "delivery-tag"},
456
+ {"type": "bit", "name": "requeue"}],
457
+ "name": "reject"}],
458
+ "name": "file",
459
+ "properties": [{"type": "shortstr", "name": "content-type"},
460
+ {"type": "shortstr", "name": "content-encoding"},
461
+ {"type": "table", "name": "headers"},
462
+ {"type": "octet", "name": "priority"},
463
+ {"type": "shortstr", "name": "reply-to"},
464
+ {"type": "shortstr", "name": "message-id"},
465
+ {"type": "shortstr", "name": "filename"},
466
+ {"type": "timestamp", "name": "timestamp"},
467
+ {"type": "shortstr", "name": "cluster-id"}]
468
+ },
469
+ {
470
+ "id": 80,
471
+ "methods": [{"id": 10,
472
+ "arguments": [{"type": "long", "name": "prefetch-size"},
473
+ {"type": "short", "name": "prefetch-count"},
474
+ {"type": "long", "name": "consume-rate"},
475
+ {"type": "bit", "name": "global"}],
476
+ "name": "qos"},
477
+ {"id": 11,
478
+ "arguments": [],
479
+ "name": "qos-ok"},
480
+ {"id": 20,
481
+ "arguments": [{"type": "short", "name": "ticket"},
482
+ {"type": "shortstr", "name": "queue"},
483
+ {"type": "shortstr", "name": "consumer-tag"},
484
+ {"type": "bit", "name": "no-local"},
485
+ {"type": "bit", "name": "exclusive"},
486
+ {"type": "bit", "name": "nowait"}],
487
+ "name": "consume"},
488
+ {"id": 21,
489
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
490
+ "name": "consume-ok"},
491
+ {"id": 30,
492
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
493
+ {"type": "bit", "name": "nowait"}],
494
+ "name": "cancel"},
495
+ {"id": 31,
496
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"}],
497
+ "name": "cancel-ok"},
498
+ {"content": true,
499
+ "id": 40,
500
+ "arguments": [{"type": "short", "name": "ticket"},
501
+ {"type": "shortstr", "name": "exchange"},
502
+ {"type": "shortstr", "name": "routing-key"},
503
+ {"type": "bit", "name": "mandatory"},
504
+ {"type": "bit", "name": "immediate"}],
505
+ "name": "publish"},
506
+ {"content": true,
507
+ "id": 50,
508
+ "arguments": [{"type": "short", "name": "reply-code"},
509
+ {"type": "shortstr", "name": "reply-text"},
510
+ {"type": "shortstr", "name": "exchange"},
511
+ {"type": "shortstr", "name": "routing-key"}],
512
+ "name": "return"},
513
+ {"content": true,
514
+ "id": 60,
515
+ "arguments": [{"type": "shortstr", "name": "consumer-tag"},
516
+ {"type": "longlong", "name": "delivery-tag"},
517
+ {"type": "shortstr", "name": "exchange"},
518
+ {"type": "shortstr", "name": "queue"}],
519
+ "name": "deliver"}],
520
+ "name": "stream",
521
+ "properties": [{"type": "shortstr", "name": "content-type"},
522
+ {"type": "shortstr", "name": "content-encoding"},
523
+ {"type": "table", "name": "headers"},
524
+ {"type": "octet", "name": "priority"},
525
+ {"type": "timestamp", "name": "timestamp"}]
526
+ },
527
+ {
528
+ "id": 90,
529
+ "methods": [{"id": 10,
530
+ "arguments": [],
531
+ "name": "select"},
532
+ {"id": 11,
533
+ "arguments": [],
534
+ "name": "select-ok"},
535
+ {"id": 20,
536
+ "arguments": [],
537
+ "name": "commit"},
538
+ {"id": 21,
539
+ "arguments": [],
540
+ "name": "commit-ok"},
541
+ {"id": 30,
542
+ "arguments": [],
543
+ "name": "rollback"},
544
+ {"id": 31,
545
+ "arguments": [],
546
+ "name": "rollback-ok"}],
547
+ "name": "tx"
548
+ },
549
+ {
550
+ "id": 100,
551
+ "methods": [{"id": 10,
552
+ "arguments": [],
553
+ "name": "select"},
554
+ {"id": 11,
555
+ "arguments": [],
556
+ "name": "select-ok"},
557
+ {"id": 20,
558
+ "arguments": [{"type": "shortstr", "name": "dtx-identifier"}],
559
+ "name": "start"},
560
+ {"id": 21,
561
+ "arguments": [], "name": "start-ok"}],
562
+ "name": "dtx"
563
+ },
564
+ {
565
+ "id": 110,
566
+ "methods": [{"content": true,
567
+ "id": 10,
568
+ "arguments": [{"type": "table", "name": "meta-data"}],
569
+ "name": "request"}],
570
+ "name": "tunnel",
571
+ "properties": [{"type": "table", "name": "headers"},
572
+ {"type": "shortstr", "name": "proxy-name"},
573
+ {"type": "shortstr", "name": "data-name"},
574
+ {"type": "octet", "name": "durable"},
575
+ {"type": "octet", "name": "broadcast"}]
576
+ },
577
+ {
578
+ "id": 120,
579
+ "methods": [{"id": 10,
580
+ "arguments": [{"type": "octet", "name": "integer-1"},
581
+ {"type": "short", "name": "integer-2"},
582
+ {"type": "long", "name": "integer-3"},
583
+ {"type": "longlong", "name": "integer-4"},
584
+ {"type": "octet", "name": "operation"}],
585
+ "name": "integer"},
586
+ {"id": 11,
587
+ "arguments": [{"type": "longlong", "name": "result"}],
588
+ "name": "integer-ok"},
589
+ {"id": 20,
590
+ "arguments": [{"type": "shortstr", "name": "string-1"},
591
+ {"type": "longstr", "name": "string-2"},
592
+ {"type": "octet", "name": "operation"}],
593
+ "name": "string"},
594
+ {"id": 21,
595
+ "arguments": [{"type": "longstr", "name": "result"}],
596
+ "name": "string-ok"},
597
+ {"id": 30,
598
+ "arguments": [{"type": "table", "name": "table"},
599
+ {"type": "octet", "name": "integer-op"},
600
+ {"type": "octet", "name": "string-op"}],
601
+ "name": "table"},
602
+ {"id": 31,
603
+ "arguments": [{"type": "longlong", "name": "integer-result"},
604
+ {"type": "longstr", "name": "string-result"}],
605
+ "name": "table-ok"},
606
+ {"content": true,
607
+ "id": 40,
608
+ "arguments": [],
609
+ "name": "content"},
610
+ {"content": true,
611
+ "id": 41,
612
+ "arguments": [{"type": "long", "name": "content-checksum"}],
613
+ "name": "content-ok"}],
614
+ "name": "test"
615
+ }
616
+ ]
617
+ }