Panda3D
 All Classes Functions Variables Enumerations
Public Member Functions | Static Public Member Functions | Friends | List of all members
ClientDevice Class Reference

Any of a number of different devices that might be attached to a ClientBase, including trackers, etc. More...

#include "clientDevice.h"

Inheritance diagram for ClientDevice:
TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase ClientAnalogDevice ClientButtonDevice ClientDialDevice ClientTrackerDevice VrpnAnalogDevice VrpnButtonDevice VrpnDialDevice VrpnTrackerDevice

Public Member Functions

virtual ~ClientDevice ()
 We don't actually call disconnect() at the ClientDevice level destructor, because by the time we get here we're already partly destructed. More...
 
void acquire ()
 Grabs the mutex associated with this particular device. More...
 
void disconnect ()
 Disconnects the ClientDevice from its ClientBase object. More...
 
virtual TypeHandle force_init_type ()
 
ClientBaseget_client () const
 Returns the ClientBase this device is associated with. More...
 
const string & get_device_name () const
 Returns the device name reported to the ClientBase. More...
 
TypeHandle get_device_type () const
 Returns the type of device this is considered to be to the ClientBase: a ClientTrackerDevice, ClientAnalogDevice, or what have you. More...
 
virtual TypeHandle get_type () const
 
bool is_connected () const
 Returns true if the device is still connected to its ClientBase, false otherwise. More...
 
virtual void output (ostream &out) const
 
void poll ()
 Causes the connected ClientBase to poll all of its clients, if necessary. More...
 
void unlock ()
 Releases the mutex associated with this particular device. More...
 
virtual void write (ostream &out, int indent_level=0) const
 
- Public Member Functions inherited from TypedReferenceCount
 TypedReferenceCount (const TypedReferenceCount &copy)
 
void operator= (const TypedReferenceCount &copy)
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
int get_best_parent_from_Set (const std::set< int > &) const
 
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly. More...
 
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type. More...
 
void operator= (const TypedObject &copy)
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 Returns the current reference count. More...
 
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object. More...
 
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More...
 
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More...
 
void ref () const
 Explicitly increments the reference count. More...
 
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
virtual bool unref () const
 Explicitly decrements the reference count. More...
 
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object. More...
 
void weak_unref (WeakPointerToVoid *ptv)
 Removes the indicated PointerToVoid as a weak reference to this object. More...
 

Static Public Member Functions

static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle get_class_type ()
 
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96. More...
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 

Friends

class ClientBase
 

Detailed Description

Any of a number of different devices that might be attached to a ClientBase, including trackers, etc.

This is an abstract interface; the actual implementations are in ClientTrackerDevice, etc.

Definition at line 35 of file clientDevice.h.

Constructor & Destructor Documentation

ClientDevice::~ClientDevice ( )
virtual

We don't actually call disconnect() at the ClientDevice level destructor, because by the time we get here we're already partly destructed.

Instead, we should call disconnect() from each specific kind of derived class.

Definition at line 51 of file clientDevice.cxx.

Member Function Documentation

void ClientDevice::acquire ( )
inline

Grabs the mutex associated with this particular device.

The device will not update asynchronously while the mutex is held, allowing the user to copy the data out without fear of getting a partial update during the copy.

Definition at line 76 of file clientDevice.I.

Referenced by disconnect().

void ClientDevice::disconnect ( )

Disconnects the ClientDevice from its ClientBase object.

The device will stop receiving updates.

Normally, you should not need to call this explicitly (and it is probably a mistake to do so); it will automatically be called when the ClientDevice object destructs.

The lock should *not* be held while this call is made; it will explicitly grab the lock itself.

Definition at line 74 of file clientDevice.cxx.

References acquire(), and unlock().

ClientBase * ClientDevice::get_client ( ) const
inline

Returns the ClientBase this device is associated with.

Definition at line 23 of file clientDevice.I.

const string & ClientDevice::get_device_name ( ) const
inline

Returns the device name reported to the ClientBase.

This has some implementation-defined meaning to identify particular devices.

Definition at line 62 of file clientDevice.I.

TypeHandle ClientDevice::get_device_type ( ) const
inline

Returns the type of device this is considered to be to the ClientBase: a ClientTrackerDevice, ClientAnalogDevice, or what have you.

This is not exactly the same thing as get_type(), because it does not return the exact type of the ClientDevice (e.g. it reports ClientTrackerDevice, not VrpnTrackerDevice).

Definition at line 50 of file clientDevice.I.

bool ClientDevice::is_connected ( ) const
inline

Returns true if the device is still connected to its ClientBase, false otherwise.

Definition at line 34 of file clientDevice.I.

void ClientDevice::poll ( )

Causes the connected ClientBase to poll all of its clients, if necessary.

This will be a no-op if the client is running in forked mode, or if it has already polled everything this frame.

This should generally be called before accessing the data in this ClientDevice to ensure that it is fresh.

Definition at line 97 of file clientDevice.cxx.

References ClientBase::poll().

void ClientDevice::unlock ( )
inline

Releases the mutex associated with this particular device.

This should be called after all the data has been successfully copied out. See acquire().

Definition at line 90 of file clientDevice.I.

Referenced by disconnect().


The documentation for this class was generated from the following files: