[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