315 lines
12 KiB
Plaintext
315 lines
12 KiB
Plaintext
// Filename: pStatClient.I
|
|
// Created by: drose (16Jul00)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PANDA 3D SOFTWARE
|
|
// Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
|
|
//
|
|
// All use of this software is subject to the terms of the Panda 3d
|
|
// Software license. You should have received a copy of this license
|
|
// along with this source code; you will also find a current copy of
|
|
// the license at http://etc.cmu.edu/panda3d/docs/license/ .
|
|
//
|
|
// To contact the maintainers of this program write to
|
|
// panda3d-general@lists.sourceforge.net .
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::set_client_name
|
|
// Access: Published
|
|
// Description: Sets the name of the client. This is reported to the
|
|
// PStatsServer, and will presumably be written in the
|
|
// title bar or something.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void PStatClient::
|
|
set_client_name(const string &name) {
|
|
get_impl()->set_client_name(name);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_client_name
|
|
// Access: Published
|
|
// Description: Retrieves the name of the client as set.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE string PStatClient::
|
|
get_client_name() const {
|
|
return get_impl()->get_client_name();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::set_max_rate
|
|
// Access: Published
|
|
// Description: Controls the number of packets that will be sent to
|
|
// the server. Normally, one packet is sent per frame,
|
|
// but this can flood the server with more packets than
|
|
// it can handle if the frame rate is especially good
|
|
// (e.g. if nothing is onscreen at the moment). Set
|
|
// this parameter to a reasonable number to prevent this
|
|
// from happening.
|
|
//
|
|
// This number specifies the maximum number of packets
|
|
// that will be sent to the server per second, per
|
|
// thread.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void PStatClient::
|
|
set_max_rate(float rate) {
|
|
get_impl()->set_max_rate(rate);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_max_rate
|
|
// Access: Published
|
|
// Description: Returns the maximum number of packets that will be
|
|
// sent to the server per second, per thread. See
|
|
// set_max_rate().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE float PStatClient::
|
|
get_max_rate() const {
|
|
return get_impl()->get_max_rate();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_num_collectors
|
|
// Access: Published
|
|
// Description: Returns the total number of collectors the Client
|
|
// knows about.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE int PStatClient::
|
|
get_num_collectors() const {
|
|
return _collectors.size();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_collector_def
|
|
// Access: Published
|
|
// Description: Returns the definition body of the nth collector.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE PStatCollectorDef *PStatClient::
|
|
get_collector_def(int index) const {
|
|
nassertr(index >= 0 && index < (int)_collectors.size(), NULL);
|
|
|
|
return _collectors[index].get_def(this, index);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_num_threads
|
|
// Access: Published
|
|
// Description: Returns the total number of threads the Client
|
|
// knows about.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE int PStatClient::
|
|
get_num_threads() const {
|
|
return _threads.size();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_thread_name
|
|
// Access: Published
|
|
// Description: Returns the name of the indicated thread.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE string PStatClient::
|
|
get_thread_name(int index) const {
|
|
nassertr(index >= 0 && index < (int)_threads.size(), string());
|
|
return _threads[index]._name;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_clock
|
|
// Access: Published
|
|
// Description: Returns a reference to the PStatClient's clock
|
|
// object. It keeps its own clock, instead of using the
|
|
// global clock object, so the stats won't get mucked up
|
|
// if you put the global clock in non-real-time mode or
|
|
// something.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE const ClockObject &PStatClient::
|
|
get_clock() const {
|
|
return get_impl()->get_clock();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::connect
|
|
// Access: Published, Static
|
|
// Description: Attempts to establish a connection to the indicated
|
|
// PStatServer. Returns true if successful, false on
|
|
// failure.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::
|
|
connect(const string &hostname, int port) {
|
|
return get_global_pstats()->client_connect(hostname, port);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::disconnect
|
|
// Access: Published, Static
|
|
// Description: Closes the connection previously established.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void PStatClient::
|
|
disconnect() {
|
|
get_global_pstats()->client_disconnect();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::is_connected
|
|
// Access: Published, Static
|
|
// Description: Returns true if the client believes it is connected
|
|
// to a working PStatServer, false otherwise.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::
|
|
is_connected() {
|
|
return get_global_pstats()->client_is_connected();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::resume_after_pause
|
|
// Access: Published, Static
|
|
// Description: Resumes the PStatClient after the simulation has been
|
|
// paused for a while. This allows the stats to
|
|
// continue exactly where it left off, instead of
|
|
// leaving a big gap that would represent a chug.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void PStatClient::
|
|
resume_after_pause() {
|
|
get_global_pstats()->client_resume_after_pause();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::client_connect
|
|
// Access: Published
|
|
// Description: The nonstatic implementation of connect().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::
|
|
client_connect(string hostname, int port) {
|
|
client_disconnect();
|
|
return get_impl()->client_connect(hostname, port);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::client_is_connected
|
|
// Access: Published
|
|
// Description: The nonstatic implementation of is_connected().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::
|
|
client_is_connected() const {
|
|
return has_impl() && _impl->client_is_connected();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::client_resume_after_pause
|
|
// Access: Published
|
|
// Description: Resumes the PStatClient after the simulation has been
|
|
// paused for a while. This allows the stats to
|
|
// continue exactly where it left off, instead of
|
|
// leaving a big gap that would represent a chug.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void PStatClient::
|
|
client_resume_after_pause() {
|
|
if (has_impl()) {
|
|
_impl->client_resume_after_pause();
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::has_impl
|
|
// Access: Private
|
|
// Description: Returns true if the PStatClientImpl object has been
|
|
// created for this object yet, false otherwise.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::
|
|
has_impl() const {
|
|
return (_impl != (PStatClientImpl *)NULL);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_impl
|
|
// Access: Private
|
|
// Description: Returns the PStatClientImpl object for this object.
|
|
// If the PStatClientImpl object has not yet been
|
|
// created, implicitly creates it.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE PStatClientImpl *PStatClient::
|
|
get_impl() {
|
|
if (_impl == (PStatClientImpl *)NULL) {
|
|
_impl = new PStatClientImpl(this);
|
|
}
|
|
|
|
return _impl;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::get_impl
|
|
// Access: Private
|
|
// Description: Returns the PStatClientImpl object for this object.
|
|
// If the PStatClientImpl object has not yet been
|
|
// created, implicitly creates it.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE const PStatClientImpl *PStatClient::
|
|
get_impl() const {
|
|
return ((PStatClient *)this)->get_impl();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::Collector::Constructor
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE PStatClient::Collector::
|
|
Collector(int parent_index, const string &name) :
|
|
_def(NULL),
|
|
_parent_index(parent_index),
|
|
_name(name)
|
|
{
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::Collector::get_parent_index
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE int PStatClient::Collector::
|
|
get_parent_index() const {
|
|
return _parent_index;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::Collector::get_name
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE const string &PStatClient::Collector::
|
|
get_name() const {
|
|
return _name;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::Collector::is_active
|
|
// Access: Public
|
|
// Description: Returns true if the indicated collector has been
|
|
// designated as active, false otherwise. This might
|
|
// return initially false until the collector def has
|
|
// actually been created.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool PStatClient::Collector::
|
|
is_active() const {
|
|
return _def != (PStatCollectorDef *)NULL && _def->_is_active;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: PStatClient::Collector::get_def
|
|
// Access: Public
|
|
// Description: Returns the PStatCollectorDef that contains all of
|
|
// the information about the collector. If this object
|
|
// has not yet been created, creates it.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE PStatCollectorDef *PStatClient::Collector::
|
|
get_def(const PStatClient *client, int this_index) const {
|
|
if (_def == (PStatCollectorDef *)NULL) {
|
|
((Collector *)this)->make_def(client, this_index);
|
|
}
|
|
|
|
return _def;
|
|
}
|