[Gd-chatter] r10849 - in trunk/libraries: gui-sniffer packetizer

hannes at gwydiondylan.org hannes at gwydiondylan.org
Fri Aug 11 01:35:42 CEST 2006


Author: hannes
Date: Fri Aug 11 01:35:40 2006
New Revision: 10849

Modified:
   trunk/libraries/gui-sniffer/gui-sniffer.dylan
   trunk/libraries/packetizer/util.dylan
Log:
Bug: 7299
*better treeview stuff (generate a root-item for each layer)
*only 2 byte address in hexdump (ethereal does this also)

Modified: trunk/libraries/gui-sniffer/gui-sniffer.dylan
==============================================================================
--- trunk/libraries/gui-sniffer/gui-sniffer.dylan	(original)
+++ trunk/libraries/gui-sniffer/gui-sniffer.dylan	Fri Aug 11 01:35:40 2006
@@ -31,6 +31,11 @@
   sorted-frame-fields(a-frame)
 end;
 
+define method frame-children-generator (a-frame :: <header-frame>)
+  let ffs = sorted-frame-fields(a-frame);
+  copy-sequence(ffs, end: ffs.size - 1);
+end;
+
 define method frame-children-generator (frame-field :: <frame-field>)
   if (instance?(frame-field.field, <repeated-field>))
     frame-field.value
@@ -41,6 +46,13 @@
   end
 end;
 
+define method frame-root-generator (frame :: <header-frame>)
+  add!(frame-root-generator(payload(frame)), frame);
+end;
+
+define method frame-root-generator (frame :: <frame>)
+  list(frame);
+end;
 define method frame-print-label (frame-field :: <frame-field>)
   if (~ frame-children-predicate(frame-field))
     format-to-string("%s: %=", frame-field.field.field-name, frame-field.value)
@@ -67,22 +79,6 @@
   format-to-string("%=", frame);
 end;
 
-define method frame-viewer(frame :: <frame>)
-  make(<tree-control>, 
-       roots: vector(frame),
-       label-key: frame-print-label,
-       children-generator: frame-children-generator,
-       children-predicate: frame-children-predicate)
-end;
-
-define method frame-viewer(frames :: <collection>)
-  make(<tree-control>, 
-       roots: frames,
-       label-key: frame-print-label,
-       children-generator: frame-children-generator,
-       children-predicate: frame-children-predicate)
-end;
-
 define method print-source (frame :: <ethernet-frame>)
   as(<string>, frame.source-address)
 end;
@@ -117,22 +113,24 @@
   show-packet-tree(frame, packet);
   show-packet-hex-dump(frame, packet);
 end;
-
 define method show-packet-tree (frame :: <gui-sniffer-frame>, packet)
   frame.packet-tree-view.tree-control-roots
     := if (packet)
-         frame-children-generator(packet);
+         frame-root-generator(packet);
        else
          #[]
        end;
 end;
 
 define method show-packet-hex-dump (frame :: <gui-sniffer-frame>, network-packet)
+  //XXX: this should be easier!
   frame.packet-hex-dump.gadget-value
     := if (network-packet)
          let out = make(<string-stream>, direction: #"output");
          block()
-           hexdump(out, network-packet.packet);
+           hexdump(out, network-packet.packet); //XXX: once assemble-frame
+                                                //on unparsed-container-frame works,
+                                                //we can use assemble-frame here
            stream-contents(out);
          cleanup
            close(out)
@@ -147,6 +145,7 @@
   *count* := *count* + 1;
   *count*;
 end;
+
 define frame <gui-sniffer-frame> (<simple-frame>, <filter>)
   slot network-frames = make(<stretchy-vector>);
   slot filter-expression = #f;

Modified: trunk/libraries/packetizer/util.dylan
==============================================================================
--- trunk/libraries/packetizer/util.dylan	(original)
+++ trunk/libraries/packetizer/util.dylan	Fri Aug 11 01:35:40 2006
@@ -13,7 +13,7 @@
   end;
   for (byte keyed-by index in sequence)
     if(sequence.size > 16 & modulo(index, 16) == 0)
-      format(stream, "%s  ", hex(index, size: 8))
+      format(stream, "%s  ", hex(index, size: 4))
     end;
     format(stream, "%s", hex(byte, size: 2));
     if(modulo(index, 16) == 15 



More information about the chatter mailing list