#include <vrpnClient.h>
Inheritance diagram for VrpnClient:
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< 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. | |
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< ClientDevice > | make_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. | |
VrpnTracker * | get_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. | |
VrpnButton * | get_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. | |
VrpnAnalog * | get_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. | |
VrpnDial * | get_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 |
Definition at line 50 of file vrpnClient.h.
|
Definition at line 102 of file vrpnClient.h. |
|
Definition at line 101 of file vrpnClient.h. |
|
Definition at line 103 of file vrpnClient.h. |
|
Definition at line 100 of file vrpnClient.h. |
|
Definition at line 47 of file vrpnClient.cxx. References _server_name. |
|
Definition at line 73 of file vrpnClient.cxx. References _server_name, indent(), is_connected(), and is_valid(). |
|
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(). |
|
Removes the analog device from the list of things to be updated.
Definition at line 540 of file vrpnClient.cxx. References _buttons. |
|
Removes the button device from the list of things to be updated.
Definition at line 521 of file vrpnClient.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 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(). |
|
Removes the dial device from the list of things to be updated.
Definition at line 559 of file vrpnClient.cxx. |
|
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. |
|
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(). |
|
Reimplemented from ClientBase. Definition at line 123 of file vrpnClient.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. |
|
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. |
|
Removes and deletes the indicated VrpnButton, which is no longer referenced by any VrpnButtonDevices.
Definition at line 670 of file vrpnClient.cxx. References _dials. |
|
Removes and deletes the indicated VrpnDial, which is no longer referenced by any VrpnDialDevices.
Definition at line 790 of file vrpnClient.cxx. |
|
Removes and deletes the indicated VrpnTracker, which is no longer referenced by any VrpnTrackerDevices.
Definition at line 610 of file vrpnClient.cxx. |
|
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. |
|
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. |
|
Reimplemented from ClientBase. Definition at line 112 of file vrpnClient.h. References ClientBase::get_class_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. |
|
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. |
|
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. |
|
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(). |
|
Returns the name of the server as passed to the VrpnClient constructor.
Definition at line 35 of file vrpnClient.I. References _connection, and INLINE. |
|
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(). |
|
Reimplemented from ClientBase. Definition at line 120 of file vrpnClient.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 ClientBase. Definition at line 115 of file vrpnClient.h. References ClientBase::get_class_type(), and ClientBase::init_type(). |
|
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(). |
|
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 ClientBase::_forked, ClientBase::_last_poll_frame, ClientBase::do_poll(), ClockObject::get_frame_count(), ClockObject::get_global_clock(), and 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(). |
|
|
|
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. |
|
|
|
|
|
|
|
|
|
|
|
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(). |
|
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(). |
|
Definition at line 107 of file vrpnClient.h. Referenced by disconnect_device(), and get_tracker(). |
|
Definition at line 106 of file vrpnClient.h. Referenced by disconnect_analog_device(), and disconnect_device(). |
|
Definition at line 98 of file vrpnClient.h. Referenced by free_analog(), get_server_name(), get_tracker(), is_connected(), and is_valid(). |
|
Definition at line 108 of file vrpnClient.h. Referenced by disconnect_device(), and free_button(). |
|
Definition at line 97 of file vrpnClient.h. Referenced by disconnect_device(), VrpnClient(), and ~VrpnClient(). |
|
Definition at line 105 of file vrpnClient.h. Referenced by disconnect_device(), disconnect_tracker_device(), and write(). |
|
Reimplemented from ClientBase. Definition at line 37 of file vrpnClient.cxx. |
|
Definition at line 66 of file vrpnClient.h. |