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

VrpnClient Class Reference

A specific ClientBase that connects to a VRPN server and records information on the connected VRPN devices. More...

#include <vrpnClient.h>

Inheritance diagram for VrpnClient:

ClientBase TypedReferenceCount TypedObject ReferenceCount List of all members.

Public Member Functions

 VrpnClient (const string &server_name)
 ~VrpnClient ()
const string & get_server_name () const
 Returns the name of the server as passed to the VrpnClient constructor.

bool is_valid () const
 Returns true if everything seems to be kosher with the server (even if there is no connection), or false otherwise.

bool is_connected () const
 Returns true if the connection is established succesfully, false otherwise.

void write (ostream &out, int indent_level=0) const
 Writes a list of the active devices that the VrpnClient is currently polling each frame.

virtual TypeHandle get_type () const
virtual TypeHandle force_init_type ()
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.

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

double convert_to_secs (struct timeval msg_time)
 Little inline function to convert a struct timeval to only seconds.

TypeHandle get_class_type ()
void init_type ()

Protected Member Functions

virtual PT (ClientDevice) make_device(TypeHandle device_type
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.

virtual PointerTo< ClientDevicemake_device (TypeHandle device_type, const string &device_name)=0

Protected Attributes

virtual const string & device_name

Private Types

typedef pmap< string, VrpnTracker * > Trackers
typedef pmap< string, VrpnButton * > Buttons
typedef pmap< string, VrpnAnalog * > Analogs
typedef pmap< string, VrpnDial * > Dials

Private Member Functions

 PT (ClientDevice) make_tracker_device(const string &device_name)
 PT (ClientDevice) make_button_device(const string &device_name)
 PT (ClientDevice) make_analog_device(const string &device_name)
 PT (ClientDevice) make_dial_device(const string &device_name)
void disconnect_tracker_device (VrpnTrackerDevice *device)
 Removes the tracker device from the list of things to be updated.

void disconnect_button_device (VrpnButtonDevice *device)
 Removes the button device from the list of things to be updated.

void disconnect_analog_device (VrpnAnalogDevice *device)
 Removes the analog device from the list of things to be updated.

void disconnect_dial_device (VrpnDialDevice *device)
 Removes the dial device from the list of things to be updated.

VrpnTrackerget_tracker (const string &tracker_name)
 Finds a VrpnTracker of the indicated name, and returns it if one already exists, or creates a new one if it does not.

void free_tracker (VrpnTracker *vrpn_tracker)
 Removes and deletes the indicated VrpnTracker, which is no longer referenced by any VrpnTrackerDevices.

VrpnButtonget_button (const string &button_name)
 Finds a VrpnButton of the indicated name, and returns it if one already exists, or creates a new one if it does not.

void free_button (VrpnButton *vrpn_button)
 Removes and deletes the indicated VrpnButton, which is no longer referenced by any VrpnButtonDevices.

VrpnAnalogget_analog (const string &analog_name)
 Finds a VrpnAnalog of the indicated name, and returns it if one already exists, or creates a new one if it does not.

void free_analog (VrpnAnalog *vrpn_analog)
 Removes and deletes the indicated VrpnAnalog, which is no longer referenced by any VrpnAnalogDevices.

VrpnDialget_dial (const string &dial_name)
 Finds a VrpnDial of the indicated name, and returns it if one already exists, or creates a new one if it does not.

void free_dial (VrpnDial *vrpn_dial)
 Removes and deletes the indicated VrpnDial, which is no longer referenced by any VrpnDialDevices.


Private Attributes

string _server_name
vrpn_Connection * _connection
Trackers _trackers
Buttons _buttons
Analogs _analogs
Dials _dials

Static Private Attributes

TypeHandle _type_handle

Detailed Description

A specific ClientBase that connects to a VRPN server and records information on the connected VRPN devices.

Definition at line 50 of file vrpnClient.h.


Member Typedef Documentation

typedef pmap<string, VrpnAnalog *> VrpnClient::Analogs [private]
 

Definition at line 102 of file vrpnClient.h.

typedef pmap<string, VrpnButton *> VrpnClient::Buttons [private]
 

Definition at line 101 of file vrpnClient.h.

typedef pmap<string, VrpnDial *> VrpnClient::Dials [private]
 

Definition at line 103 of file vrpnClient.h.

typedef pmap<string, VrpnTracker *> VrpnClient::Trackers [private]
 

Definition at line 100 of file vrpnClient.h.


Constructor & Destructor Documentation

VrpnClient::VrpnClient const string &  server_name  ) 
 

Definition at line 47 of file vrpnClient.cxx.

References _server_name.

VrpnClient::~VrpnClient  ) 
 

Definition at line 73 of file vrpnClient.cxx.

References _server_name, indent(), is_connected(), and is_valid().


Member Function Documentation

double VrpnClient::convert_to_secs struct timeval  msg_time  )  [inline, static]
 

Little inline function to convert a struct timeval to only seconds.

Definition at line 83 of file vrpnClient.I.

References INLINE.

Referenced by VrpnTracker::vrpn_position_callback(), and VrpnTracker::vrpn_velocity_callback().

void VrpnClient::disconnect_analog_device VrpnAnalogDevice device  )  [private]
 

Removes the analog device from the list of things to be updated.

Definition at line 540 of file vrpnClient.cxx.

References _buttons.

void VrpnClient::disconnect_button_device VrpnButtonDevice device  )  [private]
 

Removes the button device from the list of things to be updated.

Definition at line 521 of file vrpnClient.cxx.

bool VrpnClient::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 from ClientBase.

Definition at line 209 of file vrpnClient.cxx.

References _analogs, _buttons, _dials, _server_name, _trackers, ClientBase::do_poll(), VrpnDial::poll(), VrpnAnalog::poll(), VrpnButton::poll(), and VrpnTracker::poll().

void VrpnClient::disconnect_dial_device VrpnDialDevice device  )  [private]
 

Removes the dial device from the list of things to be updated.

Definition at line 559 of file vrpnClient.cxx.

void VrpnClient::disconnect_tracker_device VrpnTrackerDevice device  )  [private]
 

Removes the tracker device from the list of things to be updated.

Definition at line 502 of file vrpnClient.cxx.

References _trackers, VrpnTracker::get_tracker_name(), VrpnTracker::is_empty(), and nassertv.

void VrpnClient::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 from ClientBase.

Definition at line 253 of file vrpnClient.cxx.

References VrpnTrackerDevice::DataType, VrpnTrackerDevice::DT_acceleration, VrpnTrackerDevice::DT_position, VrpnTrackerDevice::DT_velocity, get_tracker(), VrpnTracker::mark(), size_t, and string_to_int().

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

Reimplemented from ClientBase.

Definition at line 123 of file vrpnClient.h.

bool ClientBase::fork_asynchronous_thread double  poll_time  )  [inherited]
 

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.

void VrpnClient::free_analog VrpnAnalog vrpn_analog  )  [private]
 

Removes and deletes the indicated VrpnAnalog, which is no longer referenced by any VrpnAnalogDevices.

Definition at line 730 of file vrpnClient.cxx.

References _connection, and NULL.

void VrpnClient::free_button VrpnButton vrpn_button  )  [private]
 

Removes and deletes the indicated VrpnButton, which is no longer referenced by any VrpnButtonDevices.

Definition at line 670 of file vrpnClient.cxx.

References _dials.

void VrpnClient::free_dial VrpnDial vrpn_dial  )  [private]
 

Removes and deletes the indicated VrpnDial, which is no longer referenced by any VrpnDialDevices.

Definition at line 790 of file vrpnClient.cxx.

void VrpnClient::free_tracker VrpnTracker vrpn_tracker  )  [private]
 

Removes and deletes the indicated VrpnTracker, which is no longer referenced by any VrpnTrackerDevices.

Definition at line 610 of file vrpnClient.cxx.

VrpnAnalog * VrpnClient::get_analog const string &  analog_name  )  [private]
 

Finds a VrpnAnalog of the indicated name, and returns it if one already exists, or creates a new one if it does not.

Definition at line 700 of file vrpnClient.cxx.

VrpnButton * VrpnClient::get_button const string &  button_name  )  [private]
 

Finds a VrpnButton of the indicated name, and returns it if one already exists, or creates a new one if it does not.

Definition at line 640 of file vrpnClient.cxx.

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

Reimplemented from ClientBase.

Definition at line 112 of file vrpnClient.h.

References ClientBase::get_class_type().

CoordinateSystem ClientBase::get_coordinate_system  )  const [inline, inherited]
 

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
[inherited]
 

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.

VrpnDial * VrpnClient::get_dial const string &  dial_name  )  [private]
 

Finds a VrpnDial of the indicated name, and returns it if one already exists, or creates a new one if it does not.

Definition at line 760 of file vrpnClient.cxx.

References NULL.

double ClientBase::get_last_poll_time  )  const [inline, inherited]
 

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 ClientBase::_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().

const string & VrpnClient::get_server_name  )  const [inline]
 

Returns the name of the server as passed to the VrpnClient constructor.

Definition at line 35 of file vrpnClient.I.

References _connection, and INLINE.

VrpnTracker * VrpnClient::get_tracker const string &  tracker_name  )  [private]
 

Finds a VrpnTracker of the indicated name, and returns it if one already exists, or creates a new one if it does not.

Definition at line 580 of file vrpnClient.cxx.

References _analogs, and _connection.

Referenced by do_poll().

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

Reimplemented from ClientBase.

Definition at line 120 of file vrpnClient.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 VrpnClient::init_type void   )  [inline, static]
 

Reimplemented from ClientBase.

Definition at line 115 of file vrpnClient.h.

References ClientBase::get_class_type(), and ClientBase::init_type().

bool VrpnClient::is_connected  )  const [inline]
 

Returns true if the connection is established succesfully, false otherwise.

Definition at line 67 of file vrpnClient.I.

References _connection, and INLINE.

Referenced by ~VrpnClient().

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, inherited]
 

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 ClientBase::_forked, ClientBase::_last_poll_frame, ClientBase::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().

bool VrpnClient::is_valid  )  const [inline]
 

Returns true if everything seems to be kosher with the server (even if there is no connection), or false otherwise.

Definition at line 52 of file vrpnClient.I.

References _connection.

Referenced by ~VrpnClient().

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

bool ClientBase::poll  )  [inline, inherited]
 

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 ClientBase::_last_poll_time, and INLINE.

VrpnClient::PT ClientDevice   )  const [private]
 

VrpnClient::PT ClientDevice   )  const [private]
 

VrpnClient::PT ClientDevice   )  const [private]
 

VrpnClient::PT ClientDevice   )  const [private]
 

virtual VrpnClient::PT ClientDevice   )  [protected, virtual]
 

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, inherited]
 

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

void VrpnClient::write ostream &  out,
int  indent_level = 0
const
 

Writes a list of the active devices that the VrpnClient is currently polling each frame.

Definition at line 88 of file vrpnClient.cxx.

References _trackers, indent(), and VrpnTracker::write().


Member Data Documentation

Analogs VrpnClient::_analogs [private]
 

Definition at line 107 of file vrpnClient.h.

Referenced by disconnect_device(), and get_tracker().

Buttons VrpnClient::_buttons [private]
 

Definition at line 106 of file vrpnClient.h.

Referenced by disconnect_analog_device(), and disconnect_device().

vrpn_Connection* VrpnClient::_connection [private]
 

Definition at line 98 of file vrpnClient.h.

Referenced by free_analog(), get_server_name(), get_tracker(), is_connected(), and is_valid().

Dials VrpnClient::_dials [private]
 

Definition at line 108 of file vrpnClient.h.

Referenced by disconnect_device(), and free_button().

string VrpnClient::_server_name [private]
 

Definition at line 97 of file vrpnClient.h.

Referenced by disconnect_device(), VrpnClient(), and ~VrpnClient().

Trackers VrpnClient::_trackers [private]
 

Definition at line 105 of file vrpnClient.h.

Referenced by disconnect_device(), disconnect_tracker_device(), and write().

TypeHandle VrpnClient::_type_handle [static, private]
 

Reimplemented from ClientBase.

Definition at line 37 of file vrpnClient.cxx.

virtual const string& VrpnClient::device_name [protected]
 

Definition at line 66 of file vrpnClient.h.


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