Skip to content
This repository was archived by the owner on Nov 20, 2023. It is now read-only.

Event Table Roadmap

alexmonthy edited this page Dec 15, 2017 · 7 revisions

Roadmap for the Event Table implementation

Indexing

  • Add iterator copy API + make sure it works for CTF
  • Add the notion of TracePosition (super-class of TraceIterator). Basically an immobile iterator:
    • Can save the current position of an iterator via TraceIterator.getPosition() TracePosition.of()
    • Can create a new iterator from a saved position using TracePosition.newIterator()
  • Allow/test iterator seeking using the CTF index
  • Allow trace iterators to move backwards
    • Default implementation could be to rewind n events and read forwards up to the starting point, and keep this cache as the next events the iterator will move through, backwards.
  • Allow collection iterators to move backwards
  • Add specification in CtfTraceCollection iterator implementation to rewind according to packet borders
    • Among all the possible CTF streams, go to the latest current-packet start time. Use this as the starting point for the next cache block.
    • There doesn't seem to be any advantage of doing collection-wide stream comparison. We can let each trace do its own per-stream comparison. This will limit the impact of traces with very different packet sizes. Then we don't need to have any special case at the collection level.

Table implementation

  • Upon timestamp selection, the event table will request up to 50,000 25,000 events forwards and 50,000 25,000 events backwards using backwards/forwards iterators to populate the current table "page".
  • Prominent Next/Previous Page buttons can be used to recenter the table on the previous first/last event, by requesting an additional 50,000 25,000 (we can re-use the "half-page") events.

Backlog

  • Add support for loading CTF indexes from disk
  • Build the CTF index for traces where it is entirely missing.
  • Even if the CTF index exists, look through it for potentially very large packets, and "refine" the index where deemed too coarse (no need to read the entire trace to do this).
  • Add filters to iterator creation. The iterator will then only return events matching its filter.
Clone this wiki locally