#include <clientBase.h>
Inheritance diagram for ClientBase:
Public Member Functions | |
~ClientBase () | |
bool | fork_asynchronous_thread (double poll_time) |
Forks a separate thread to do all the polling of connected devices. | |
bool | is_forked () const |
Returns true if the ClientBase has been forked (and, therefore, poll() does not need to be called), false otherwise. | |
bool | poll () |
Initiates a poll of the client devices, if we are not forked and if we have not already polled this frame. | |
double | get_last_poll_time () const |
Returns the time (according to the global ClockObject's get_real_time() method) of the last device poll. | |
void | set_coordinate_system (CoordinateSystem cs) |
Specifies the coordinate system that all devices associated with this client will operate in. | |
CoordinateSystem | get_coordinate_system () const |
Returns the coordinate system that all devices associated with this client will operate in. | |
PointerTo< ClientDevice > | get_device (TypeHandle device_type, const string &device_name) |
Returns a ClientDevice pointer that corresponds to the named device of the indicated device type. | |
virtual TypeHandle | get_type () const |
virtual TypeHandle | force_init_type () |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
Static Public Member Functions | |
TypeHandle | get_class_type () |
void | init_type () |
Protected Member Functions | |
ClientBase () | |
virtual PointerTo< ClientDevice > | make_device (TypeHandle device_type, const string &device_name)=0 |
virtual bool | disconnect_device (TypeHandle device_type, const string &device_name, ClientDevice *device) |
Removes the device, which is presumably about to destruct, from the list of connected devices, and frees any data required to support it. | |
virtual void | do_poll () |
Implements the polling and updating of connected devices, if the ClientBase requires this. | |
Private Types | |
typedef pmap< string, ClientDevice * > | DevicesByName |
typedef pmap< TypeHandle, DevicesByName > | Devices |
Private Attributes | |
Devices | _devices |
bool | _forked |
double | _last_poll_time |
int | _last_poll_frame |
CoordinateSystem | _cs |
Static Private Attributes | |
TypeHandle | _type_handle |
Friends | |
class | ClientDevice |
This provides a common interface to connect to such devices and extract their data; it is used by TrackerNode etc. to put these devices in the data graph.
Definition at line 64 of file clientBase.h.
|
Definition at line 95 of file clientBase.h. |
|
Definition at line 94 of file clientBase.h. |
|
Definition at line 36 of file clientBase.cxx. References NULL. |
|
Definition at line 57 of file clientBase.cxx. |
|
Removes the device, which is presumably about to destruct, from the list of connected devices, and frees any data required to support it. This device will no longer receive automatic updates with each poll. The return value is true if the device was disconnected, or false if it was unknown (e.g. it was disconnected previously). Reimplemented in VrpnClient. Definition at line 219 of file clientBase.cxx. References nassertr, and NULL. Referenced by PT(), and ClientDevice::~ClientDevice(). |
|
Implements the polling and updating of connected devices, if the ClientBase requires this. This may be called in a sub-thread if fork_asynchronous_thread() was called; otherwise, it will be called once per frame. Reimplemented in VrpnClient. Definition at line 254 of file clientBase.cxx. Referenced by VrpnClient::disconnect_device(), and is_forked(). |
|
Reimplemented from TypedReferenceCount. Reimplemented in VrpnClient. Definition at line 125 of file clientBase.h. |
|
Forks a separate thread to do all the polling of connected devices. The forked thread will poll after every poll_time seconds has elapsed. Returns true if the fork was successful, or false otherwise (for instance, because we were already forked, or because asynchronous threads are disabled). Definition at line 101 of file clientBase.cxx. |
|
Reimplemented from TypedReferenceCount. Reimplemented in VrpnClient. Definition at line 114 of file clientBase.h. Referenced by VrpnClient::get_class_type(), and VrpnClient::init_type(). |
|
Returns the coordinate system that all devices associated with this client will operate in. Normally, this is CS_default. Definition at line 113 of file clientBase.I. |
|
Returns a ClientDevice pointer that corresponds to the named device of the indicated device type. The device_type should be one of ClientTrackerDevice, ClientAnalogDevice, etc.; the device_name is implementation defined. Normally, the user does not need to call this function directly; it is called automatically by creating a TrackerNode or AnalogNode or some such data graph node. The return value is the pointer to the created device (which might be the same pointer returned by a previous call to this function with the same parameters). When the pointer destructs (i.e. its reference count reaches zero) it will automatically be disconnected. If the named device does not exist or cannot be connected for some reason, NULL is returned. Definition at line 173 of file clientBase.cxx. |
|
Returns the time (according to the global ClockObject's get_real_time() method) of the last device poll.
Definition at line 79 of file clientBase.I. References _cs, CoordinateSystem, and INLINE. |
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
Reimplemented from TypedReferenceCount. Reimplemented in VrpnClient. Definition at line 122 of file clientBase.h. |
|
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index(). Definition at line 71 of file typedObject.I. References TypeHandle::get_name(), TypedObject::get_type(), and INLINE. |
|
Reimplemented from TypedReferenceCount. Reimplemented in VrpnClient. Definition at line 117 of file clientBase.h. Referenced by VrpnClient::init_type(). |
|
Returns true if the current object is the indicated type exactly.
Definition at line 101 of file typedObject.I. Referenced by PT(), and CollisionNode::xform(). |
|
Returns true if the ClientBase has been forked (and, therefore, poll() does not need to be called), false otherwise.
Definition at line 37 of file clientBase.I. References _forked, _last_poll_frame, do_poll(), ClockObject::get_frame_count(), ClockObject::get_global_clock(), and INLINE. |
|
|
|
|
Initiates a poll of the client devices, if we are not forked and if we have not already polled this frame. Returns true if the poll occurred, or false if it did not. Definition at line 56 of file clientBase.I. References _last_poll_time, and INLINE. |
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
Specifies the coordinate system that all devices associated with this client will operate in. Normally, this is CS_default. Definition at line 96 of file clientBase.I. |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ReferenceCount::~ReferenceCount(). |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Definition at line 130 of file clientBase.h. |
|
Definition at line 101 of file clientBase.h. Referenced by get_last_poll_time(). |
|
Definition at line 96 of file clientBase.h. |
|
Definition at line 98 of file clientBase.h. Referenced by is_forked(). |
|
Definition at line 100 of file clientBase.h. Referenced by is_forked(). |
|
Definition at line 99 of file clientBase.h. Referenced by poll(). |
|
Reimplemented from TypedReferenceCount. Reimplemented in VrpnClient. Definition at line 26 of file clientBase.cxx. |