bunny 0.3.1 → 0.4.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.
@@ -1,177 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
-
4
- name = 'amqp-0.8.json'
5
- path = File.dirname(__FILE__)+'/'+name
6
- s = JSON.parse(File.read(path))
7
-
8
- # require 'pp'
9
- # pp(s)
10
- # exit
11
-
12
- require 'erb'
13
-
14
- puts ERB.new(%q[
15
- #:stopdoc:
16
- # this file was autogenerated on <%= Time.now.to_s %>
17
- # using <%= name.ljust(16) %> (mtime: <%= File.mtime(path) %>)
18
- #
19
- # DO NOT EDIT! (edit ext/codegen.rb instead, and run `rake codegen`)
20
-
21
- module Bunny
22
- module Transport
23
- class Frame
24
- def self.types
25
- @types ||= {}
26
- end
27
-
28
- def self.Frame id
29
- (@_base_frames ||= {})[id] ||= Class.new(Frame) do
30
- class_eval %[
31
- def self.inherited klass
32
- klass.const_set(:ID, #{id})
33
- Frame.types[#{id}] = klass
34
- end
35
- ]
36
- end
37
- end
38
-
39
- <%- s['constants'].select{|c| (1..8).include? c['value'] }.each do |c| -%>
40
- class <%= c['name'].gsub(/^FRAME-/,'').split('-').map{|w| w.downcase.capitalize}.join.ljust(9) -%> < Frame( <%= c['value'] -%> ); end
41
- <%- end -%>
42
-
43
- FOOTER = <%= frame_end = s['constants'].find{|c| c['name'] == 'FRAME-END' }['value'] %>
44
- end
45
- end
46
- end
47
-
48
- module Bunny
49
- module Protocol
50
- HEADER = <%= s['name'].dump %>.freeze
51
- VERSION_MAJOR = <%= s['major-version'] %>
52
- VERSION_MINOR = <%= s['minor-version'] %>
53
- PORT = <%= s['port'] %>
54
-
55
- RESPONSES = {
56
- <%- s['constants'].select{|c| c['value'] != frame_end and (200..500).include? c['value'] }.each do |c| -%>
57
- <%= c['value'] %> => :<%= c['name'].tr('-', '_').gsub(/^FRAME_/,'').upcase -%>,
58
- <%- end -%>
59
- }
60
-
61
- FIELDS = [
62
- <%- s['domains'].select{|d| d.first == d.last }.each do |d| -%>
63
- :<%= d.first -%>,
64
- <%- end -%>
65
- ]
66
-
67
- class Class
68
- class << self
69
- FIELDS.each do |f|
70
- class_eval %[
71
- def #{f} name
72
- properties << [ :#{f}, name ] unless properties.include?([:#{f}, name])
73
- attr_accessor name
74
- end
75
- ]
76
- end
77
-
78
- def properties() @properties ||= [] end
79
-
80
- def id() self::ID end
81
- def name() self::NAME end
82
- end
83
-
84
- class Method
85
- class << self
86
- FIELDS.each do |f|
87
- class_eval %[
88
- def #{f} name
89
- arguments << [ :#{f}, name ] unless arguments.include?([:#{f}, name])
90
- attr_accessor name
91
- end
92
- ]
93
- end
94
-
95
- def arguments() @arguments ||= [] end
96
-
97
- def parent() Protocol.const_get(self.to_s[/Protocol::(.+?)::/,1]) end
98
- def id() self::ID end
99
- def name() self::NAME end
100
- end
101
-
102
- def == b
103
- self.class.arguments.inject(true) do |eql, (type, name)|
104
- eql and __send__("#{name}") == b.__send__("#{name}")
105
- end
106
- end
107
- end
108
-
109
- def self.methods() @methods ||= {} end
110
-
111
- def self.Method(id, name)
112
- @_base_methods ||= {}
113
- @_base_methods[id] ||= ::Class.new(Method) do
114
- class_eval %[
115
- def self.inherited klass
116
- klass.const_set(:ID, #{id})
117
- klass.const_set(:NAME, :#{name.to_s})
118
- klass.parent.methods[#{id}] = klass
119
- klass.parent.methods[klass::NAME] = klass
120
- end
121
- ]
122
- end
123
- end
124
- end
125
-
126
- def self.classes() @classes ||= {} end
127
-
128
- def self.Class(id, name)
129
- @_base_classes ||= {}
130
- @_base_classes[id] ||= ::Class.new(Class) do
131
- class_eval %[
132
- def self.inherited klass
133
- klass.const_set(:ID, #{id})
134
- klass.const_set(:NAME, :#{name.to_s})
135
- Protocol.classes[#{id}] = klass
136
- Protocol.classes[klass::NAME] = klass
137
- end
138
- ]
139
- end
140
- end
141
- end
142
- end
143
-
144
- module Bunny
145
- module Protocol
146
- <%- s['classes'].each do |c| -%>
147
- class <%= c['name'].capitalize.ljust(12) %> < Class( <%= c['id'].to_s.rjust(3) %>, :<%= c['name'].ljust(12) %> ); end
148
- <%- end -%>
149
-
150
- <%- s['classes'].each do |c| -%>
151
- class <%= c['name'].capitalize %>
152
- <%- c['properties'].each do |p| -%>
153
- <%= p['type'].ljust(10) %> :<%= p['name'].tr('-','_') %>
154
- <%- end if c['properties'] -%>
155
-
156
- <%- c['methods'].each do |m| -%>
157
- class <%= m['name'].capitalize.gsub(/-(.)/){ "#{$1.upcase}"}.ljust(12) %> < Method( <%= m['id'].to_s.rjust(3) %>, :<%= m['name'].tr('- ','_').ljust(14) %> ); end
158
- <%- end -%>
159
-
160
- <%- c['methods'].each do |m| -%>
161
- class <%= m['name'].capitalize.gsub(/-(.)/){ "#{$1.upcase}"} %>
162
- <%- m['arguments'].each do |a| -%>
163
- <%- if a['domain'] -%>
164
- <%= s['domains'].find{|k,v| k == a['domain']}.last.ljust(10) %> :<%= a['name'].tr('- ','_') %>
165
- <%- else -%>
166
- <%= a['type'].ljust(10) %> :<%= a['name'].tr('- ','_') %>
167
- <%- end -%>
168
- <%- end if m['arguments'] -%>
169
- end
170
-
171
- <%- end -%>
172
- end
173
-
174
- <%- end -%>
175
- end
176
- end
177
- ].gsub!(/^ /,''), nil, '>-%').result(binding)
@@ -1,62 +0,0 @@
1
- module Bunny
2
- module Transport #:nodoc: all
3
- class Frame
4
- def initialize payload = nil, channel = 0
5
- @channel, @payload = channel, payload
6
- end
7
- attr_accessor :channel, :payload
8
-
9
- def id
10
- self.class::ID
11
- end
12
-
13
- def to_binary
14
- buf = Transport::Buffer.new
15
- buf.write :octet, id
16
- buf.write :short, channel
17
- buf.write :longstr, payload
18
- buf.write :octet, Transport::Frame::FOOTER
19
- buf.rewind
20
- buf
21
- end
22
-
23
- def to_s
24
- to_binary.to_s
25
- end
26
-
27
- def == frame
28
- [ :id, :channel, :payload ].inject(true) do |eql, field|
29
- eql and __send__(field) == frame.__send__(field)
30
- end
31
- end
32
-
33
- class Method
34
- def initialize payload = nil, channel = 0
35
- super
36
- unless @payload.is_a? Protocol::Class::Method or @payload.nil?
37
- @payload = Protocol.parse(@payload)
38
- end
39
- end
40
- end
41
-
42
- class Header
43
- def initialize payload = nil, channel = 0
44
- super
45
- unless @payload.is_a? Protocol::Header or @payload.nil?
46
- @payload = Protocol::Header.new(@payload)
47
- end
48
- end
49
- end
50
-
51
- class Body; end
52
-
53
- def self.parse buf
54
- buf = Transport::Buffer.new(buf) unless buf.is_a? Transport::Buffer
55
- buf.extract do
56
- id, channel, payload, footer = buf.read(:octet, :short, :longstr, :octet)
57
- Transport::Frame.types[id].new(payload, channel) if footer == Transport::Frame::FOOTER
58
- end
59
- end
60
- end
61
- end
62
- end