[Gd-chatter] r10928 - in trunk/libraries: id3v2 packetizer
andreas at gwydiondylan.org
andreas at gwydiondylan.org
Wed Oct 18 00:02:35 CEST 2006
Author: andreas
Date: Wed Oct 18 00:02:32 2006
New Revision: 10928
Modified:
trunk/libraries/id3v2/id3v2.dylan
trunk/libraries/packetizer/ieee80211.dylan
trunk/libraries/packetizer/ipv4.dylan
trunk/libraries/packetizer/leaf-frames.dylan
trunk/libraries/packetizer/protocol-definer-macro.dylan
Log:
job: 7299
Stop passing start to parse-frame and parse-frame-field-aux
Modified: trunk/libraries/id3v2/id3v2.dylan
==============================================================================
--- trunk/libraries/id3v2/id3v2.dylan (original)
+++ trunk/libraries/id3v2/id3v2.dylan Wed Oct 18 00:02:32 2006
@@ -18,19 +18,13 @@
define method parse-frame
(frame-type == <4byte-7bit-big-endian-unsigned-integer>, packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (value :: <integer>, next-unparsed :: <integer>)
- byte-aligned(start);
- let byte-start = byte-offset(start);
- if (packet.size < byte-start + 4)
- signal(make(<malformed-packet-error>))
- else
- let result = 0;
- for (i from byte-start below byte-start + 4)
- result := packet[i] + ash(result, 7)
- end;
- values(result, start + 8 * 4);
+ let result = 0;
+ for (i from 0 below 4)
+ result := packet[i] + ash(result, 7)
end;
+ values(result, 8 * 4);
end;
define protocol id3v2-string (container-frame)
@@ -49,14 +43,14 @@
end;
define method parse-frame
- (frame-type == <id3v2-string>, packet :: <byte-sequence>, #key start :: <integer> = 0)
+ (frame-type == <id3v2-string>, packet :: <byte-sequence>, #key)
=> (value :: <id3v2-string>, next-unparsed :: false-or(<integer>))
let type-code = if (packet.size == 0) #x10 else packet[0] end if;
let string-type = select (type-code)
#x00 => <ascii-string-with-type>;
otherwise <ascii-string>;
end select;
- parse-frame(string-type, packet, start: start);
+ parse-frame(string-type, packet);
end;
define protocol id3v2-flags (container-frame)
@@ -96,11 +90,7 @@
repeated field id3v2-frame :: <id3v2-frame>,
reached-end?:
method (frame :: <id3v2-frame>)
- if (frame.frame-id.data[0] == #x00)
- #t;
- else
- #f;
- end if;
+ frame.frame-id.data[0] == #x00
end method;
//field payload :: <raw-frame>, start: frame.id3v2-header.tag-size * 8;
end;
Modified: trunk/libraries/packetizer/ieee80211.dylan
==============================================================================
--- trunk/libraries/packetizer/ieee80211.dylan (original)
+++ trunk/libraries/packetizer/ieee80211.dylan Wed Oct 18 00:02:32 2006
@@ -151,13 +151,13 @@
" Mbit");
end;
-define method parse-frame (frame == <rate>, packet :: <byte-sequence>, #key start = 0, parent)
+define method parse-frame (frame == <rate>, packet :: <byte-sequence>, #key parent)
let f = make(unparsed-class(frame), packet: packet);
let type = select (f.bss-basic-set?)
0 => <extended-rate>;
1 => <basic-set-rate>;
end;
- parse-frame(type, packet, start: start, parent: parent);
+ parse-frame(type, packet, parent: parent);
end;
define protocol ieee80211-reserved-field (ieee80211-raw-information-field)
Modified: trunk/libraries/packetizer/ipv4.dylan
==============================================================================
--- trunk/libraries/packetizer/ipv4.dylan (original)
+++ trunk/libraries/packetizer/ipv4.dylan Wed Oct 18 00:02:32 2006
@@ -14,9 +14,9 @@
define method parse-frame (frame-type == <ip-option-frame>,
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key parent)
=> (value :: <ip-option-frame>, next-unparsed :: <integer>)
- let ip-option-type = parse-frame(<ip-option-type-frame>, packet, start: start);
+ let ip-option-type = parse-frame(<ip-option-type-frame>, packet, parent: parent);
let option-frame-type
= select (ip-option-type.class)
0 => select (ip-option-type.number)
@@ -41,7 +41,7 @@
end;
otherwise => signal(make(<malformed-packet-error>))
end;
- parse-frame(option-frame-type, packet, start: start);
+ parse-frame(option-frame-type, packet, parent: parent);
end;
define protocol router-alert-ip-option (ip-option-frame)
Modified: trunk/libraries/packetizer/leaf-frames.dylan
==============================================================================
--- trunk/libraries/packetizer/leaf-frames.dylan (original)
+++ trunk/libraries/packetizer/leaf-frames.dylan Wed Oct 18 00:02:32 2006
@@ -40,14 +40,9 @@
define method parse-frame (frame-type == <unsigned-byte>,
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (value :: <byte>, next-unparsed :: <integer>)
- byte-aligned(start);
- if (packet.size < byte-offset(start) + 1)
- signal(make(<malformed-packet-error>))
- else
- values(packet[byte-offset(start)], start + 8)
- end;
+ values(packet[0], 8)
end;
define method assemble-frame-into-as
@@ -116,12 +111,12 @@
define method parse-frame (frame-type :: subclass(<unsigned-integer-bit-frame>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (value :: <integer>, next-unparsed :: <integer>)
let result-size = frame-size(frame-type);
- let subseq = subsequence(packet, start: start, length: result-size);
+ let subseq = subsequence(packet, length: result-size);
let value = decode-integer(subseq, result-size);
- values(value, result-size + start);
+ values(value, result-size);
end;
define method assemble-frame (frame :: <unsigned-integer-bit-frame>)
@@ -188,10 +183,9 @@
define method parse-frame (frame-type :: subclass(<fixed-size-byte-vector-frame>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (frame :: <fixed-size-byte-vector-frame>, next-unparsed :: <integer>)
- byte-aligned(start);
- let end-of-frame = start + field-size(frame-type);
+ let end-of-frame = field-size(frame-type);
if (packet.size < byte-offset(end-of-frame))
signal(make(<malformed-packet-error>))
else
@@ -290,19 +284,17 @@
define method parse-frame (frame-type :: subclass(<big-endian-unsigned-integer-byte-frame>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (value :: <integer>, next-unparsed :: <integer>)
- byte-aligned(start);
let result-size = byte-offset(frame-size(frame-type));
- let byte-start = byte-offset(start);
- if (packet.size < byte-start + result-size)
+ if (packet.size < result-size)
signal(make(<malformed-packet-error>))
else
let result = 0;
- for (i from byte-start below byte-start + result-size)
+ for (i from 0 below result-size)
result := packet[i] + ash(result, 8)
end;
- values(result, start + 8 * result-size);
+ values(result, result-size * 8);
end;
end;
@@ -350,19 +342,17 @@
define method parse-frame (frame-type :: subclass(<little-endian-unsigned-integer-byte-frame>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0)
+ #key)
=> (value :: <integer>, next-unparsed :: <integer>)
- byte-aligned(start);
let result-size = byte-offset(frame-size(frame-type));
- let byte-start = byte-offset(start);
- if (packet.size < byte-start + result-size)
+ if (packet.size < result-size)
signal(make(<malformed-packet-error>))
else
let result = 0;
- for (i from byte-start + result-size - 1 to byte-start by -1)
+ for (i from result-size - 1 to 0 by -1)
result := packet[i] + ash(result, 8)
end;
- values(result, start + 8 * result-size);
+ values(result, result-size * 8);
end;
end;
@@ -417,18 +407,9 @@
define method parse-frame (frame-type :: subclass(<variable-size-byte-vector>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0,
- parent)
+ #key parent)
=> (frame :: <variable-size-byte-vector>, next-unparsed :: <integer>)
- byte-aligned(start);
- if (packet.size < byte-offset(start))
- signal(make(<malformed-packet-error>))
- else
- values(make(frame-type,
- data: packet,
- parent: parent),
- start + packet.size * 8)
- end
+ values(make(frame-type, data: packet, parent: parent), packet.size * 8)
end;
define method assemble-frame (frame :: <variable-size-byte-vector>)
Modified: trunk/libraries/packetizer/protocol-definer-macro.dylan
==============================================================================
--- trunk/libraries/packetizer/protocol-definer-macro.dylan (original)
+++ trunk/libraries/packetizer/protocol-definer-macro.dylan Wed Oct 18 00:02:32 2006
@@ -247,7 +247,6 @@
let (value, length)
= parse-frame-field-aux(frame-field.field,
frame-field.frame,
- 0,
subsequence(frame-field.frame.packet,
start: start,
end: end-of-field));
@@ -273,34 +272,30 @@
define method parse-frame-field-aux
(field :: <single-field>,
frame :: <unparsed-container-frame>,
- start :: <integer>,
packet :: <byte-sequence>)
- parse-frame(field.type, packet, start: start, parent: frame);
+ parse-frame(field.type, packet, parent: frame);
end;
define method parse-frame-field-aux
(field :: <variably-typed-field>,
frame :: <unparsed-container-frame>,
- start :: <integer>,
packet :: <byte-sequence>)
let type = field.type-function(frame);
- parse-frame(type, packet, start: start, parent: frame);
+ parse-frame(type, packet, parent: frame);
end;
//XXX: refactor here. parse more lazy; use <frame-field> infrastructure
define method parse-frame-field-aux
(field :: <self-delimited-repeated-field>,
frame :: <unparsed-container-frame>,
- start :: <integer>,
packet :: <byte-sequence>)
let frames = make(<stretchy-vector>);
let ff = get-frame-field(field.index, frame);
let frame-fields = ff.frame-field-list;
- let start = start;
+ let start :: <integer> = 0;
if (packet.size > 0)
let (value, offset)
= parse-frame(field.type,
subsequence(packet, start: start),
- start: 0,
parent: frame);
unless (offset)
offset := end-offset(get-frame-field(field-count(value.object-class) - 1, value));
@@ -318,7 +313,6 @@
let (value, offset)
= parse-frame(field.type,
subsequence(packet, start: start),
- start: 0,
parent: frame);
unless (offset)
offset := end-offset(get-frame-field(field-count(value.object-class) - 1, value));
@@ -339,18 +333,16 @@
define method parse-frame-field-aux
(field :: <count-repeated-field>,
frame :: <unparsed-container-frame>,
- start :: <integer>,
packet :: <byte-sequence>)
let frames = make(<stretchy-vector>);
let ff = get-frame-field(field.index, frame);
let frame-fields = ff.frame-field-list;
- let start = start;
+ let start :: <integer> = 0;
if (packet.size > 0)
for (i from 0 below field.count(frame))
let (value, offset)
= parse-frame(field.type,
subsequence(packet, start: start),
- start: 0,
parent: frame);
unless (offset)
offset := end-offset(get-frame-field(field-count(value.object-class) - 1, value));
@@ -371,11 +363,9 @@
define method parse-frame (frame-type :: subclass(<container-frame>),
packet :: <byte-sequence>,
- #key start :: <integer> = 0,
- parent :: false-or(<container-frame>) = #f)
- byte-aligned(start);
+ #key parent :: false-or(<container-frame>))
let frame = make(unparsed-class(frame-type),
- packet: subsequence(packet, start: start),
+ packet: packet,
parent: parent);
let length = field-size(frame-type);
if (length = $unknown-at-compile-time)
More information about the chatter
mailing list