Class: PacketViaDMEM
- Inherits:
-
Object
show all
- Defined in:
- lib/packet_via_dmem.rb,
lib/packet_via_dmem/cli.rb,
lib/packet_via_dmem/sent.rb,
lib/packet_via_dmem/packet.rb,
lib/packet_via_dmem/packets.rb,
lib/packet_via_dmem/received.rb,
lib/packet_via_dmem/header/sent.rb,
lib/packet_via_dmem/header/received.rb
Defined Under Namespace
Classes: CLI, Error, Header, Packet, Packets, Received, Sent
Constant Summary
collapse
- PACKET =
/^(Received|Sent) \d+ byte parcel:.*\n/
- FAKE =
{
:dmac => %w( 22 22 22 22 22 22 ),
:smac => %w( 66 66 66 66 66 66 ),
:etype_mpls => %w( 88 47 ),
:etype_ipv4 => %w( 08 00 ),
:ipv4 => %w( 45 ),
}
{
:received => 6,
:sent => 13,
}
Instance Method Summary
collapse
Constructor Details
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/packet_via_dmem.rb', line 19
def initialize opts={}
@received = opts.delete :received
@sent = opts.delete :sent
@log = opts.delete :log
if not @log
@log = Logger.new STDERR
@log.level = Logger::FATAL
end
@received ||= [:received]
@sc = StringScanner.new ''
end
|
Instance Method Details
#parse(str) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/packet_via_dmem.rb', line 45
def parse str
packets = Packets.new @log
@sc.string = str
while @sc.scan_until PACKET
match = @sc.matched.split(/\s+/)
type = match.first.downcase.to_sym
@sc.scan_until(/\n/) if type == :received
pkt = ''
while @sc.match?(/^0x/)
pkt << (@sc.scan_until(/\n/) || @sc.scan_until(/$/)).strip
end
pkt = parse_packet pkt
packets.add pkt, type
end
@sc.string = ''
packets
end
|
#stream(io) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/packet_via_dmem.rb', line 31
def stream io
packet = ''
while not io.eof?
line = io.readline
if line.match PACKET
packet = parse(packet).first
yield packet if packet
packet = line
else
packet << line
end
end
end
|