Panda3D
pStatMonitor.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file pStatMonitor.h
10  * @author drose
11  * @date 2000-07-08
12  */
13 
14 #ifndef PSTATMONITOR_H
15 #define PSTATMONITOR_H
16 
17 #include "pandatoolbase.h"
18 
19 #include "pStatClientData.h"
20 #include "pStatView.h"
21 
22 #include "referenceCount.h"
23 #include "pointerTo.h"
24 #include "luse.h"
25 
26 #include "pmap.h"
27 
28 class PStatCollectorDef;
29 class PStatServer;
30 
31 /**
32  * This is an abstract class that presents the interface to any number of
33  * different front-ends for the stats monitor. One of these will be created
34  * by the PStatMonitor as each client is connected; this class is responsible
35  * for opening up a new strip-chart graph or whatever is appropriate. It
36  * defines a number of empty virtual functions that will be called as new data
37  * becomes available.
38  */
39 class PStatMonitor : public ReferenceCount {
40 public:
41  // The following functions are primarily for use by internal classes to set
42  // up the monitor.
43  PStatMonitor(PStatServer *server);
44  virtual ~PStatMonitor();
45 
46  void hello_from(const std::string &hostname, const std::string &progname);
47  void bad_version(const std::string &hostname, const std::string &progname,
48  int client_major, int client_minor,
49  int server_major, int server_minor);
50  void set_client_data(PStatClientData *client_data);
51 
52 
53  // The following functions are for use by user code to determine information
54  // about the client data available.
55  bool is_alive() const;
56  void close();
57 
58  INLINE PStatServer *get_server();
59  INLINE const PStatClientData *get_client_data() const;
60  INLINE std::string get_collector_name(int collector_index);
61  const LRGBColor &get_collector_color(int collector_index);
62 
63  INLINE bool is_client_known() const;
64  INLINE std::string get_client_hostname() const;
65  INLINE std::string get_client_progname() const;
66 
67  PStatView &get_view(int thread_index);
68  PStatView &get_level_view(int collector_index, int thread_index);
69 
70 
71  // The following virtual methods may be overridden by a derived monitor
72  // class to customize behavior.
73 
74  virtual std::string get_monitor_name()=0;
75 
76  virtual void initialized();
77  virtual void got_hello();
78  virtual void got_bad_version(int client_major, int client_minor,
79  int server_major, int server_minor);
80  virtual void new_collector(int collector_index);
81  virtual void new_thread(int thread_index);
82  virtual void new_data(int thread_index, int frame_number);
83 
84  virtual void lost_connection();
85  virtual void idle();
86  virtual bool has_idle();
87 
88  virtual bool is_thread_safe();
89 
90  virtual void user_guide_bars_changed();
91 
92 protected:
93  PStatServer *_server;
94 
95 private:
96  PT(PStatClientData) _client_data;
97 
98  bool _client_known;
99  std::string _client_hostname;
100  std::string _client_progname;
101 
102  typedef pmap<int, PStatView> Views;
103  Views _views;
105  LevelViews _level_views;
106 
108  Colors _colors;
109 };
110 
111 #include "pStatMonitor.I"
112 
113 #endif
pStatClientData.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::get_server
PStatServer * get_server()
Returns the server that owns this monitor.
Definition: pStatMonitor.I:18
PStatMonitor::idle
virtual void idle()
If has_idle() returns true, this will be called periodically to allow the monitor to update its displ...
Definition: pStatMonitor.cxx:263
PStatMonitor::set_client_data
void set_client_data(PStatClientData *client_data)
Called by the PStatServer at setup time to set the new data pointer for the first time.
Definition: pStatMonitor.cxx:70
PStatMonitor::bad_version
void bad_version(const std::string &hostname, const std::string &progname, int client_major, int client_minor, int server_major, int server_minor)
Called shortly after startup time with the greeting from the client.
Definition: pStatMonitor.cxx:55
PStatServer
The overall manager of the network connections.
Definition: pStatServer.h:36
PStatMonitor::get_collector_name
std::string get_collector_name(int collector_index)
Returns the name of the indicated collector, if it is known.
Definition: pStatMonitor.I:34
ReferenceCount
A base class for all things that want to be reference-counted.
Definition: referenceCount.h:38
pmap< int, PStatView >
PStatMonitor::get_collector_color
const LRGBColor & get_collector_color(int collector_index)
Returns the color associated with the indicated collector.
Definition: pStatMonitor.cxx:104
PStatMonitor::has_idle
virtual bool has_idle()
Should be redefined to return true if you want to redefine idle() and expect it to be called.
Definition: pStatMonitor.cxx:271
PStatCollectorDef
Defines the details about the Collectors: the name, the suggested color, etc.
Definition: pStatCollectorDef.h:29
PStatMonitor::new_data
virtual void new_data(int thread_index, int frame_number)
Called as each frame's data is made available.
Definition: pStatMonitor.cxx:246
PStatMonitor::got_bad_version
virtual void got_bad_version(int client_major, int client_minor, int server_major, int server_minor)
Like got_hello(), this is called when the "hello" message has been received from the client.
Definition: pStatMonitor.cxx:213
PStatMonitor::hello_from
void hello_from(const std::string &hostname, const std::string &progname)
Called shortly after startup time with the greeting from the client.
Definition: pStatMonitor.cxx:41
PStatMonitor::get_client_progname
std::string get_client_progname() const
Returns the program name of the client we're connected to, if known.
Definition: pStatMonitor.I:69
PStatClientData
The data associated with a particular client, but not with any one particular frame or thread: the li...
Definition: pStatClientData.h:36
PStatView
A View boils down the frame data to a linear list of times spent in a number of different Collectors,...
Definition: pStatView.h:31
pmap.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pStatMonitor.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::get_view
PStatView & get_view(int thread_index)
Returns a view on the given thread index.
Definition: pStatMonitor.cxx:152
luse.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::is_alive
bool is_alive() const
Returns true if the client is alive and connected, false otherwise.
Definition: pStatMonitor.cxx:79
PStatMonitor::close
void close()
Closes the client connection if it is active.
Definition: pStatMonitor.cxx:91
PStatMonitor::new_thread
virtual void new_thread(int thread_index)
Called whenever a new Thread definition is received from the client.
Definition: pStatMonitor.cxx:235
PStatMonitor::get_client_data
const PStatClientData * get_client_data() const
Returns the client data associated with this monitor.
Definition: pStatMonitor.I:26
pStatView.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::is_client_known
bool is_client_known() const
Returns true if we've yet received the "hello" message from the client indicating its name,...
Definition: pStatMonitor.I:47
referenceCount.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandatoolbase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::get_client_hostname
std::string get_client_hostname() const
Returns the hostname of the client we're connected to, if known.
Definition: pStatMonitor.I:58
PStatMonitor::lost_connection
virtual void lost_connection()
Called whenever the connection to the client has been lost.
Definition: pStatMonitor.cxx:255
PStatMonitor
This is an abstract class that presents the interface to any number of different front-ends for the s...
Definition: pStatMonitor.h:39
pointerTo.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PStatMonitor::got_hello
virtual void got_hello()
Called when the "hello" message has been received from the client.
Definition: pStatMonitor.cxx:202
PStatMonitor::is_thread_safe
virtual bool is_thread_safe()
Should be redefined to return true if this monitor class can handle running in a sub-thread.
Definition: pStatMonitor.cxx:284
PStatMonitor::initialized
virtual void initialized()
Called after the monitor has been fully set up.
Definition: pStatMonitor.cxx:194
PStatMonitor::new_collector
virtual void new_collector(int collector_index)
Called whenever a new Collector definition is received from the client.
Definition: pStatMonitor.cxx:224
PStatMonitor::get_level_view
PStatView & get_level_view(int collector_index, int thread_index)
Returns a view on the level value (as opposed to elapsed time) for the given collector over the given...
Definition: pStatMonitor.cxx:168
PStatMonitor::user_guide_bars_changed
virtual void user_guide_bars_changed()
Called when the user guide bars have been changed.
Definition: pStatMonitor.cxx:292