6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/miu/readable.rb', line 6
def self.included(base)
base.class_eval do
def read_with_packet
parts = []
loop do
parts << read_without_packet
break unless more_parts?
end
packet = Packet.load parts
begin
data = Miu::Utility.symbolize_keys(packet.data, true) rescue packet.data
type = data[:type] rescue nil
message_class = Miu::Messages.guess(type)
packet.data = message_class.new data
packet
rescue => e
raise MessageLoadError, e
end
end
alias_method :read_without_packet, :read
alias_method :read, :read_with_packet
end
base.send :include, ::Enumerable
end
|