Kanzi Connect  1.1.10
Kanzi Connect C++ API
kanzi::connect::InterfaceClient< ObserverClass, SessionClass > Class Template Reference

Templated abstract base class for network interfaces. More...

#include <abstract_interface_client.hpp>

Inheritance diagram for kanzi::connect::InterfaceClient< ObserverClass, SessionClass >:
kanzi::connect::AbstractInterfaceClient

Public Types

typedef map< AbstractSessionSharedPtr, ObserverClass * > ObserverContainer
 Type definition for observer container. More...
 
- Public Types inherited from kanzi::connect::AbstractInterfaceClient
typedef function< void(bool)> ServiceReachableCallback
 Callback to inform whether service at server is available or not. More...
 

Public Member Functions

AbstractSessionSharedPtr acquireSession (MessageDispatcher *dispatcher)
 Acquire session in to this interface. More...
 
void addObserver (AbstractSessionSharedPtr session, ObserverClass *observer)
 Add observer in to this interface for given session. More...
 
RPCCallStoregetCallStore ()
 Retrieve RPC call store that is used to manage pending RPC calls. More...
 
virtual string getIdentifier () const
 Returns the type id of the interface. More...
 
ObserverClass * getObserver (AbstractSessionSharedPtr session)
 Retrieve observer for given session. More...
 
 InterfaceClient (const string &identifier, RPCCallStore &callstore)
 
virtual AbstractSessionSharedPtr onAcquireSession (int sessionId, MessageDispatcher *dispatcher)
 Function that allows derived classes to create their type-specific session instance. More...
 
virtual void receive (const MessagePackage &message)
 Pass a message package to this interface, resolves proper session and makes it receive the package. More...
 
void releaseSession (AbstractSessionSharedPtr session)
 Release session that is connected to this interface. More...
 
void removeObserver (AbstractSessionSharedPtr session)
 Remove observer from a given session. More...
 
- Public Member Functions inherited from kanzi::connect::AbstractInterfaceClient
 AbstractInterfaceClient (RPCCallStore &callStore)
 Constructor. More...
 
AbstractSessionSharedPtr acquireAbstractSession (MessageDispatcher *dispatcher)
 Acquires a session for this interface. More...
 
shared_ptr< p2p::RoutingRulesgetRoutingRules ()
 Retrieve routing rules for this particular client. More...
 
AbstractSessionSharedPtr getSession (int sessionId)
 Returns session by id. More...
 
bool isSessionRunning (AbstractSessionSharedPtr session) const
 Check if the given session is running or not. More...
 
void notifyServiceReachable (bool reachable)
 Invoked to notify clients whether specific service is reachable or not. More...
 
virtual void registerRemoteInterface (MessageTranslator *translator)
 Registers this interface to given message translator. More...
 
void releaseAbstractSession (AbstractSessionSharedPtr session)
 Releases given session from this interface. More...
 
bool serviceReachable () const
 Is service currently known to be reachable. More...
 
void setClient (ClientSharedPtr client)
 Stores the client this interface is bound to. More...
 
void setServiceReachableCallback (ServiceReachableCallback callback)
 Registers service reachable callback. More...
 
void setSessionRunning (AbstractSessionSharedPtr session)
 Set the given session to running state. More...
 
void setSessionStopped (AbstractSessionSharedPtr session)
 Set the given session to stopped state. More...
 
void stopAllSessions ()
 Ends all sessions since maybe the service itself has disappeared. More...
 
void terminateAllSessions ()
 Terminates all ongoing sessions. More...
 
virtual ~AbstractInterfaceClient ()
 Destructor. More...
 

Protected Attributes

string m_identifier
 
- Protected Attributes inherited from kanzi::connect::AbstractInterfaceClient
RPCCallStorem_callStore
 

Additional Inherited Members

- Protected Member Functions inherited from kanzi::connect::AbstractInterfaceClient
virtual void onReleaseSession (AbstractSessionSharedPtr)
 Function that allows derived classes to destroy their type-specific session instance. More...
 

Detailed Description

template<class ObserverClass, class SessionClass>
class kanzi::connect::InterfaceClient< ObserverClass, SessionClass >

Templated abstract base class for network interfaces.

Enforces type safety in interface and implements support for observers.

Member Typedef Documentation

◆ ObserverContainer

template<class ObserverClass, class SessionClass>
typedef map<AbstractSessionSharedPtr, ObserverClass*> kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::ObserverContainer

Type definition for observer container.

Constructor & Destructor Documentation

◆ InterfaceClient()

template<class ObserverClass, class SessionClass>
kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::InterfaceClient ( const string &  identifier,
RPCCallStore callstore 
)
inline

Member Function Documentation

◆ acquireSession()

template<class ObserverClass, class SessionClass>
AbstractSessionSharedPtr kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::acquireSession ( MessageDispatcher dispatcher)
inline

Acquire session in to this interface.

Parameters
dispatcherMessage dispatcher that is used to deliver network messages.
Returns
New session instance for this interface type.

◆ addObserver()

template<class ObserverClass, class SessionClass>
void kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::addObserver ( AbstractSessionSharedPtr  session,
ObserverClass *  observer 
)
inline

Add observer in to this interface for given session.

Parameters
sessionSession to observe.
observerObserver to receive notifications.

◆ getCallStore()

template<class ObserverClass, class SessionClass>
RPCCallStore& kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::getCallStore ( )
inline

Retrieve RPC call store that is used to manage pending RPC calls.

Returns
reference to RPC callstore implementation.

◆ getIdentifier()

template<class ObserverClass, class SessionClass>
virtual string kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::getIdentifier ( ) const
inlinevirtual

Returns the type id of the interface.

This is used to identify the service in the network.

Returns
Type of the interface, as a string.

Implements kanzi::connect::AbstractInterfaceClient.

◆ getObserver()

template<class ObserverClass, class SessionClass>
ObserverClass* kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::getObserver ( AbstractSessionSharedPtr  session)
inline

Retrieve observer for given session.

Parameters
sessionSession being observed.
Returns
Observer that is connected to session, or null if there is no such observer.

◆ onAcquireSession()

template<class ObserverClass, class SessionClass>
virtual AbstractSessionSharedPtr kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::onAcquireSession ( int  sessionId,
MessageDispatcher dispatcher 
)
inlinevirtual

Function that allows derived classes to create their type-specific session instance.

Parameters
sessionIdSession Id of the connected client, needs to be unique for this client.
dispatcherMessage dispatcher that is used to deliver network messages.
Returns
New session instance for this type of interface.

Implements kanzi::connect::AbstractInterfaceClient.

◆ receive()

template<class ObserverClass, class SessionClass>
virtual void kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::receive ( const MessagePackage message)
inlinevirtual

Pass a message package to this interface, resolves proper session and makes it receive the package.

Parameters
messageMessage that was sent.

Reimplemented from kanzi::connect::AbstractInterfaceClient.

◆ releaseSession()

template<class ObserverClass, class SessionClass>
void kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::releaseSession ( AbstractSessionSharedPtr  session)
inline

Release session that is connected to this interface.

Parameters
sessionSession to release.

◆ removeObserver()

template<class ObserverClass, class SessionClass>
void kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::removeObserver ( AbstractSessionSharedPtr  session)
inline

Remove observer from a given session.

Parameters
sessionSession to remove observer from.

Member Data Documentation

◆ m_identifier

template<class ObserverClass, class SessionClass>
string kanzi::connect::InterfaceClient< ObserverClass, SessionClass >::m_identifier
protected

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