public void process_tuple(TopaddrTuple t, ulong ts) { TopaddrRecord r = (TopaddrRecord)table[t.addr]; if (r == null) /* need new entry in hash table */ { r = new TopaddrRecord(); r.addr = t.addr; r.bytes = 0; r.pkts = 0; r.ts = ts; table[t.addr] = r; /* * XXX rough estimate! * * addr + bytes + pkts + ts * plus one hashtable entry which consists * of at least a ptr to next elem and a ptr * to the elem itself. */ mem_usage += 4 + 8 + 4 + 8; mem_usage += 4 + 4; } r.bytes += t.bytes; /* update entry */ r.pkts += (uint)t.pkts; }
int IComparer.Compare(Object _x, Object _y) { TopaddrRecord x = (TopaddrRecord)_x; TopaddrRecord y = (TopaddrRecord)_y; if (x.bytes > y.bytes) { return(-1); } if (x.bytes < y.bytes) { return(1); } return(0); }
public void print_rec(string format, Record _r) { TopaddrRecord r = (TopaddrRecord)_r; uint ts = TS.sec(r.ts); if (current != ts) { current = ts; count = 0; } count++; uint addr = r.addr & cfg.mask; ulong fullts = TS.from_time(ts, 0); switch (format) { case "pretty": print(String.Format(PRETTYFMT, TS.to_string(fullts), count, IP.to_string(addr), r.bytes, r.pkts)); break; case "plain": print(String.Format(PLAINFMT, ts, count, IP.to_string(addr), r.bytes, r.pkts)); break; case "html": print(String.Format(HTMLFMT, count, urlstr, IP.to_string(addr), r.bytes, r.pkts)); break; case "sidebox": print(String.Format(HTMLFMT, count, urlstr, IP.to_string(addr), r.bytes, r.pkts)); break; } }