OSVR Framework (Internal Development Docs)  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
osvr::connection::Connection Class Referenceabstract

Class wrapping a messaging transport (server or internal) connection. More...

#include <osvr/Connection/Connection.h>

Inheritance diagram for osvr::connection::Connection:
osvr::connection::VrpnBasedConnection

Public Types

typedef std::vector
< ConnectionDevicePtr
DeviceList
 

Public Member Functions

MessageTypePtr registerMessageType (std::string const &messageId)
 Register (or retrieve registration) of a message type. More...
 
ConnectionDevicePtr createConnectionDevice (std::string const &deviceName)
 Create a ConnectionDevice by registering a full device name. This should be namespaced with the plugin name. More...
 
ConnectionDevicePtr createConnectionDevice (DeviceInitObject &init)
 
void addDevice (ConnectionDevicePtr device)
 Add an externally-constructed device to the device list.
 
void process ()
 Process messages. This shouldn't block. More...
 
void registerConnectionHandler (std::function< void()> handler)
 Register a function to be called when a client connects or pings.
 
void registerDescriptorHandler (std::function< void()> handler)
 Register a function to be called when a descriptor changes.
 
void triggerDescriptorHandlers ()
 Signal a descriptor update and call any/all descriptor handlers.
 
virtual ~Connection ()
 Destructor.
 
boost::iterator_range
< DeviceList::const_iterator > 
getDevices () const
 Get the devices, as a range.
 

Static Public Member Functions

Factory methods

Factory method to create a local-machine-only connection

More to come.

static ConnectionPtr createLocalConnection ()
 
static ConnectionPtr createSharedConnection (boost::optional< std::string const & > iface, boost::optional< int > port)
 Factory method to create a shared connection. More...
 
static std::tuple< void
*, ConnectionPtr
createLoopbackConnection ()
 
Context Storage

Retrieve a connection pointer from a RegistrationContext

static ConnectionPtr retrieveConnection (const pluginhost::RegistrationContext &ctx)
 
static void storeConnection (pluginhost::RegistrationContext &ctx, ConnectionPtr conn)
 Store a connection pointer in a RegistrationContext.
 

Protected Member Functions

virtual MessageTypePtr m_registerMessageType (std::string const &messageId)=0
 (Subclass implementation) Register (or retrieve registration) of a message type.
 
virtual ConnectionDevicePtr m_createConnectionDevice (DeviceInitObject &init)=0
 (Subclass implementation) Register a full device name.
 
virtual void m_registerConnectionHandler (std::function< void()> handler)=0
 (Subclass implementation) Register a function to handle "new connection"/ping messages.
 
virtual void m_process ()=0
 (Subclass implementation) Process messages. This shouldn't block.
 
 Connection ()
 brief Constructor
 

Advanced Methods - not for general consumption

These can break encapsulation rules and/or encourage bad coding habits. Avoid if at all possible.

typedef std::vector< std::string > NameList
 Type of list of device names.
 
ConnectionDevicePtr registerAdvancedDevice (std::string const &deviceName, OSVR_DeviceUpdateCallback updateFunction, void *userdata)
 Record a full device name (namespaced with the plugin name) associated with a given callback. More...
 
ConnectionDevicePtr registerAdvancedDevice (NameList const &deviceNames, OSVR_DeviceUpdateCallback updateFunction, void *userdata)
 Record more than one full device name (namespaced with the plugin name) associated with a given callback. More...
 
virtual void * getUnderlyingObject ()
 Access implementation details.
 
virtual const char * getConnectionKindID ()
 Returns some implementation-defined string based on the dynamic type of the connection.
 

Detailed Description

Class wrapping a messaging transport (server or internal) connection.

Definition at line 56 of file Connection.h.

Member Function Documentation

ConnectionPtr osvr::connection::Connection::createSharedConnection ( boost::optional< std::string const & >  iface,
boost::optional< int >  port 
)
static

Factory method to create a shared connection.

Parameters
ifaceThe NIC/interface to listen on, an empty string or unset (default) means "all interfaces"
portThe port to listen on, unset/default means the default port for the underlying connection implementation.

Definition at line 53 of file Connection.cpp.

MessageTypePtr osvr::connection::Connection::registerMessageType ( std::string const &  messageId)

Register (or retrieve registration) of a message type.

Wraps the derived implementation for future expandability.

Definition at line 86 of file Connection.cpp.

ConnectionDevicePtr osvr::connection::Connection::createConnectionDevice ( std::string const &  deviceName)

Create a ConnectionDevice by registering a full device name. This should be namespaced with the plugin name.

This also adds the device so created to the device list.

ConnectionDevices often assume they're owned by a DeviceToken (whose constructor calls this method), so doing otherwise is unadvisable.

Definition at line 91 of file Connection.cpp.

ConnectionDevicePtr osvr::connection::Connection::createConnectionDevice ( DeviceInitObject init)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 98 of file Connection.cpp.

void osvr::connection::Connection::process ( )

Process messages. This shouldn't block.

Someone needs to call this method frequently.

Definition at line 143 of file Connection.cpp.

ConnectionDevicePtr osvr::connection::Connection::registerAdvancedDevice ( std::string const &  deviceName,
OSVR_DeviceUpdateCallback  updateFunction,
void *  userdata 
)

Record a full device name (namespaced with the plugin name) associated with a given callback.

This does not register the name in the underlying connection: it is an advanced method that assumes you have some other way of doing that.

This also adds the device so created to the device list.

Definition at line 107 of file Connection.cpp.

ConnectionDevicePtr osvr::connection::Connection::registerAdvancedDevice ( NameList const &  deviceNames,
OSVR_DeviceUpdateCallback  updateFunction,
void *  userdata 
)

Record more than one full device name (namespaced with the plugin name) associated with a given callback.

This does not register the names in the underlying connection: it is an advanced method that assumes you have some other way of doing that.

This also adds the device so created to the device list.

For use when a single device exposes more than one name.

Definition at line 119 of file Connection.cpp.


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