On Dec 1, 2003, at 11:09 AM, Biot Olivier wrote:
| Umm... do we really need a GtkCList?
We need some widget to display the packet list.
Whether it should be a GtkClist is another matter. I think that, at
some point, it shouldn't be, so that we *can* do the callback stuff.
The most simple approach would be to
redissect the packets we have to display (get 1st matching packet;
dissect
and display while not all visible packets are shown).
A callback-based list display widget could do that - the routine it
called to get the column text and color information would dissect the
packet to get column data and, if there are color filters, build a
protocol tree as well and run the color filters on it.
| Another way to do that would be to have a widget where the row's text
| and color is determined when a row is drawn in the screen, by a
| callback.
If we know that we only have to display a limited number of rows
(today's
computer monitors would not display more than 100 rows I think), we may
decide it is acceptable to redissect the visible rows for the
colorization.
It probably is acceptable. I infer from Microsoft Network Monitor's
behavior and some of its internal APIs for dissectors that it works
that way (with some callback scheme).
| The problem with any scheme that does stuff when a row is made
visible
| is that it'd require that the packet be dissected when its
| row is drawn
| - which would require that dissection to happen reasonably quickly,
| which would, in turn, require that the data for the packet be read
| reasonably quickly, meaning random access to the capture file be
| reasonably fast.
Ah. That's the major problem I think.
That's the major problem - another potential problem is that
"g_node_append()" is, I think, linear in the length of the list to
which it's appending, which means that there's some N^2 behavior; this
shows up in some very big packets that take many many seconds to be
disssected.
Maybe we can save the decoding dictionary in a temporary file at the
time we
read the file?
What is the "decoding dictionary"? Do you mean the protocol trees for
the packets?