Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ClientBase Class Reference

An abstract base class for a family of client device interfaces--including trackers, buttons, dials, and other analog inputs. More...

#include <clientBase.h>

Inheritance diagram for ClientBase:

TypedReferenceCount TypedObject ReferenceCount VrpnClient List of all members.

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< ClientDeviceget_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< ClientDevicemake_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

Detailed Description

An abstract base class for a family of client device interfaces--including trackers, buttons, dials, and other analog inputs.

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.


Member Typedef Documentation

typedef pmap<TypeHandle, DevicesByName> ClientBase::Devices [private]
 

Definition at line 95 of file clientBase.h.

typedef pmap<string, ClientDevice *> ClientBase::DevicesByName [private]
 

Definition at line 94 of file clientBase.h.


Constructor & Destructor Documentation

ClientBase::ClientBase  )  [protected]
 

Definition at line 36 of file clientBase.cxx.

References NULL.

ClientBase::~ClientBase  ) 
 

Definition at line 57 of file clientBase.cxx.


Member Function Documentation

bool ClientBase::disconnect_device TypeHandle  device_type,
const string &  device_name,
ClientDevice device
[protected, virtual]
 

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().

void ClientBase::do_poll  )  [protected, virtual]
 

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().

virtual TypeHandle ClientBase::force_init_type void   )  [inline, virtual]
 

Reimplemented from TypedReferenceCount.

Reimplemented in VrpnClient.

Definition at line 125 of file clientBase.h.

bool ClientBase::fork_asynchronous_thread double  poll_time  ) 
 

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.

TypeHandle ClientBase::get_class_type void   )  [inline, static]
 

Reimplemented from TypedReferenceCount.

Reimplemented in VrpnClient.

Definition at line 114 of file clientBase.h.

Referenced by VrpnClient::get_class_type(), and VrpnClient::init_type().

CoordinateSystem ClientBase::get_coordinate_system  )  const [inline]
 

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.

PointerTo< ClientDevice > ClientBase::get_device TypeHandle  device_type,
const string &  device_name
 

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.

double ClientBase::get_last_poll_time  )  const [inline]
 

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.

int ReferenceCount::get_ref_count  )  const [inline, inherited]
 

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().

virtual TypeHandle ClientBase::get_type void   )  const [inline, virtual]
 

Reimplemented from TypedReferenceCount.

Reimplemented in VrpnClient.

Definition at line 122 of file clientBase.h.

int TypedObject::get_type_index  )  const [inline, inherited]
 

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.

void ClientBase::init_type void   )  [inline, static]
 

Reimplemented from TypedReferenceCount.

Reimplemented in VrpnClient.

Definition at line 117 of file clientBase.h.

Referenced by VrpnClient::init_type().

bool TypedObject::is_exact_type TypeHandle  handle  )  const [inline, inherited]
 

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().

bool ClientBase::is_forked  )  const [inline]
 

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.

bool TypedObject::is_of_type TypeHandle  handle  )  const [inline, inherited]
 

Returns true if the current object is or derives from the indicated type.

Definition at line 86 of file typedObject.I.

Referenced by EggMaterialCollection::collapse_equivalent_materials(), EggTextureCollection::collapse_equivalent_textures(), DeferredNodeProperty::compose(), AnimBundleMaker::create_s_channel(), CharacterMaker::create_slider(), ProjectionScreen::cull_callback(), DataNode::define_output(), EggNode::determine_draw_order(), CharacterMaker::egg_to_index(), EggGroupUniquifier::EggGroupUniquifier(), EggPoolUniquifier::EggPoolUniquifier(), EggGroupNode::find_textures(), StaticTextFont::get_glyph(), EggMaterialCollection::insert_materials(), EggTextureCollection::insert_textures(), CharacterJoint::make_copy(), PT(), EggGroupNode::r_flatten_transforms(), EggGroupNode::r_transform_vertices(), EggGroupNode::recompute_polygon_normals(), CollisionLevelState::reserve(), PandaFramework::reset_frame_rate(), PandaFramework::set_texture(), EggGroupNode::steal_children(), and DataGraphTraverser::traverse().

virtual PointerTo< ClientDevice > ClientBase::make_device TypeHandle  device_type,
const string &  device_name
[protected, pure virtual]
 

bool ClientBase::poll  )  [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.

int ReferenceCount::ref  )  const [inline, inherited]
 

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().

void ClientBase::set_coordinate_system CoordinateSystem  cs  )  [inline]
 

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.

void ReferenceCount::test_ref_count_integrity  )  const [inline, inherited]
 

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().

int ReferenceCount::unref  )  const [inline, inherited]
 

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().


Friends And Related Function Documentation

friend class ClientDevice [friend]
 

Definition at line 130 of file clientBase.h.


Member Data Documentation

CoordinateSystem ClientBase::_cs [private]
 

Definition at line 101 of file clientBase.h.

Referenced by get_last_poll_time().

Devices ClientBase::_devices [private]
 

Definition at line 96 of file clientBase.h.

bool ClientBase::_forked [private]
 

Definition at line 98 of file clientBase.h.

Referenced by is_forked().

int ClientBase::_last_poll_frame [private]
 

Definition at line 100 of file clientBase.h.

Referenced by is_forked().

double ClientBase::_last_poll_time [private]
 

Definition at line 99 of file clientBase.h.

Referenced by poll().

TypeHandle ClientBase::_type_handle [static, private]
 

Reimplemented from TypedReferenceCount.

Reimplemented in VrpnClient.

Definition at line 26 of file clientBase.cxx.


The documentation for this class was generated from the following files:
Generated on Fri May 2 00:48:22 2003 for Panda by doxygen1.3