]> git.tdb.fi Git - netvis.git/blob - source/netvis.h
Tick new and reappearing hosts a few times to put them in sensible locations
[netvis.git] / source / netvis.h
1 /* $Id$
2
3 This file is part of NetVis
4 Copyright @ 2008 Mikko Rasa, Mikkosoft Productions
5 Distributed unter the GPL
6 */
7
8 #ifndef NETVIS_H_
9 #define NETVIS_H_
10
11 #include <list>
12 #include <map>
13 #include <pcap.h>
14 #include <msp/core/application.h>
15 #include <msp/debug/profiler.h>
16 #include <msp/gbase/display.h>
17 #include <msp/gbase/glcontext.h>
18 #include <msp/gbase/simplewindow.h>
19 #include <msp/gl/color.h>
20 #include <msp/gl/font.h>
21 #include <msp/time/timestamp.h>
22
23 class History;
24 class Host;
25 class Packet;
26 class Port;
27 class Resolver;
28
29 class NetVis: public Msp::Application
30 {
31 private:
32         std::string iface;
33         pcap_t *pcap;
34         Resolver *resolver;
35         unsigned localnet;
36         unsigned localnet_mask;
37
38         Msp::Graphics::SimpleGLWindow *wnd;
39         Msp::GL::Font *font;
40
41         unsigned max_hosts;
42         unsigned max_visible_hosts;
43         std::map<unsigned, Host *> hosts;
44         std::map<unsigned, Host *> disabled_hosts;
45         std::list<Packet *> packets;
46         std::map<unsigned, Port *> ports;
47         History *history;
48
49         Msp::Time::TimeStamp tick_t;
50         Msp::Time::TimeStamp fps_t;
51         unsigned frames;
52         float fps;
53
54 public:
55         NetVis(int, char **);
56         ~NetVis();
57
58         const Msp::GL::Font &get_font() const { return *font; }
59         const std::map<unsigned, Host *> &get_hosts() const { return hosts; }
60         const std::map<unsigned, Port *> &get_ports() const { return ports; }
61 private:
62         virtual void tick();
63         void render();
64         Host &get_host(unsigned);
65         Msp::GL::Color generate_color(bool) const;
66         const Port &get_port(unsigned);
67         void create_history_texture();
68
69         static void capture_handler(unsigned char *, const pcap_pkthdr *, const unsigned char *);
70
71         void sighandler(int);
72
73         static Application::RegApp<NetVis> reg;
74 };
75
76 #endif