vrpn 07.35
Virtual Reality Peripheral Network
Loading...
Searching...
No Matches
vrpn::EndpointContainer Class Reference

Container for endpoints, held by pointer. More...

#include <vrpn_EndpointContainer.h>

Public Types

typedef vrpn_Endpoint_IP T
 
typedef Treference
 
typedef Tpointer
 
typedef vrpn_Endpointbase_pointer
 
typedef container_type::size_type size_type
 
typedef EndpointIterator iterator
 
typedef EndpointIterator const_iterator
 

Public Member Functions

 EndpointContainer ()
 Constructor of empty container.
 
 ~EndpointContainer ()
 Destructor - includes a call to clear()
 
void clear ()
 Tells each held endpoint in turn to drop the connection then deletes it.
 
pointer front () const
 Shorthand for get_by_index(0)
 
template<typename T >
Tacquire (T *endpoint)
 Given the result of an endpoint allocator, if it's non-NULL, takes ownership of it.
 
void compact ()
 Goes through and gets rid of the NULL entries.
 
bool full () const
 Can we no longer accommodate a new endpoint?
 
bool is_valid (size_type i) const
 Checks to see if an index is both in-range and pointing to a still-extant object.
 
bool destroy (base_pointer endpoint)
 Destroys the contained endpoint by address.
 
pointer get_by_index (size_type i) const
 
size_type get_full_container_size () const
 Get size of container including NULL elements that haven't been compacted yet.
 
iterator begin () const
 Get an iterator to the beginning that skips nulls. Invalidated by compacting.
 
iterator end () const
 Get an iterator suitable only for testing to see if we're "done".
 

Detailed Description

Container for endpoints, held by pointer.

To check if we have room, use this: if (d_endpoints.full()) {} instead of the old code looking like this: if (which_end >= vrpn_MAX_ENDPOINTS)

Usage example for iteration:

for (vrpn::EndpointIterator it = d_endpoints.begin(), e = d_endpoints.end();
it != e; ++it) {
it->pack_type_description(which)
}
An iterator that goes forward in an EndpointContainer skipping the NULLs, that also acts a bit like a...

Definition at line 55 of file vrpn_EndpointContainer.h.

Member Typedef Documentation

◆ base_pointer

◆ const_iterator

◆ iterator

◆ pointer

Definition at line 59 of file vrpn_EndpointContainer.h.

◆ reference

Definition at line 58 of file vrpn_EndpointContainer.h.

◆ size_type

typedef container_type::size_type vrpn::EndpointContainer::size_type

Definition at line 66 of file vrpn_EndpointContainer.h.

◆ T

Constructor & Destructor Documentation

◆ EndpointContainer()

vrpn::EndpointContainer::EndpointContainer ( )

Constructor of empty container.

Definition at line 66 of file vrpn_EndpointContainer.C.

References VRPN_EC_TRACE.

◆ ~EndpointContainer()

vrpn::EndpointContainer::~EndpointContainer ( )

Destructor - includes a call to clear()

Definition at line 72 of file vrpn_EndpointContainer.C.

References clear(), and VRPN_EC_TRACE.

Here is the call graph for this function:

Member Function Documentation

◆ acquire()

template<typename T >
T * vrpn::EndpointContainer::acquire ( T endpoint)
inline

Given the result of an endpoint allocator, if it's non-NULL, takes ownership of it.

Returns
the input pointer

Definition at line 86 of file vrpn_EndpointContainer.h.

Referenced by vrpn_Connection_IP::connect_to_client(), vrpn_Connection_IP::server_check_for_incoming_connections(), and vrpn_Connection::vrpn_Connection().

◆ begin()

◆ clear()

void vrpn::EndpointContainer::clear ( )

Tells each held endpoint in turn to drop the connection then deletes it.

Definition at line 78 of file vrpn_EndpointContainer.C.

References VRPN_EC_TRACE.

Referenced by ~EndpointContainer(), vrpn_Connection::~vrpn_Connection(), and vrpn_Connection_IP::~vrpn_Connection_IP().

◆ compact()

void vrpn::EndpointContainer::compact ( )
inline

Goes through and gets rid of the NULL entries.

Definition at line 345 of file vrpn_EndpointContainer.h.

Referenced by vrpn_Connection::compact_endpoints().

◆ destroy()

bool vrpn::EndpointContainer::destroy ( EndpointContainer::base_pointer  endpoint)

Destroys the contained endpoint by address.

Returns
true if there was something for us to delete

Definition at line 106 of file vrpn_EndpointContainer.C.

References VRPN_EC_TRACE.

Referenced by vrpn_Connection::delete_endpoint(), and vrpn_Connection::vrpn_Connection().

◆ end()

◆ front()

pointer vrpn::EndpointContainer::front ( ) const
inline

◆ full()

bool vrpn::EndpointContainer::full ( ) const

Can we no longer accommodate a new endpoint?

Todo:
this is actually fairly arbitrary - we can go up to around max_size()

Definition at line 99 of file vrpn_EndpointContainer.C.

References get_full_container_size(), and vrpn_MAX_ENDPOINTS.

Referenced by vrpn_Connection_IP::connect_to_client(), and vrpn_Connection_IP::server_check_for_incoming_connections().

Here is the call graph for this function:

◆ get_by_index()

EndpointContainer::pointer vrpn::EndpointContainer::get_by_index ( size_type  i) const
inline

Definition at line 329 of file vrpn_EndpointContainer.h.

References is_valid().

Referenced by front().

Here is the call graph for this function:

◆ get_full_container_size()

EndpointContainer::size_type vrpn::EndpointContainer::get_full_container_size ( ) const
inline

Get size of container including NULL elements that haven't been compacted yet.

Definition at line 338 of file vrpn_EndpointContainer.h.

Referenced by full(), and is_valid().

◆ is_valid()

bool vrpn::EndpointContainer::is_valid ( EndpointContainer::size_type  i) const
inline

Checks to see if an index is both in-range and pointing to a still-extant object.

Definition at line 323 of file vrpn_EndpointContainer.h.

References get_full_container_size().

Referenced by get_by_index(), vrpn_File_Connection::read_cookie(), and vrpn_File_Connection::vrpn_File_Connection().

Here is the call graph for this function:

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