libcamgm
Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
ca_mgm::CallbackBase< Request, Result > Class Template Referenceabstract

LiMaL callback interface base class. More...

#include <CallbackBase.hpp>

Public Member Functions

 CallbackBase ()
 
virtual ~CallbackBase ()
 
virtual Result * call (const Request *request)
 

Protected Member Functions

virtual Result * callback (const Request *request)=0
 

Private Member Functions

 CallbackBase (const CallbackBase &)
 
CallbackBaseoperator= (const CallbackBase &)
 

Detailed Description

template<class Request, class Result>
class ca_mgm::CallbackBase< Request, Result >

LiMaL callback interface base class.

The abstract CallbackBase template provides the callback interface supported in LiMaL.

The interface uses only one callback function signature (see callback() method), but with definable return code and input parameter data-types (Request,Result). Both data-types have the requirement to provide a default and (deep) copy constructors. The default constructor can be used to signal default or invalid Request/Result.

The usage of one function signature and the copy constructor make it possible to implement reusable support wrapper templates allowing to implement the callback method in languages other than C++ (e.g. perl or python).

To implement a function (or class) using a callback, following steps are required:

Todo:

Implement a CallbackRef holding a reference counted (specialized?) Callback object...

Implement a call() method variant using Request/Result references?

Constructor & Destructor Documentation

template<class Request , class Result >
ca_mgm::CallbackBase< Request, Result >::CallbackBase ( )
inline

Default constructor.

template<class Request , class Result >
virtual ca_mgm::CallbackBase< Request, Result >::~CallbackBase ( )
inlinevirtual

Destructor.

template<class Request , class Result >
ca_mgm::CallbackBase< Request, Result >::CallbackBase ( const CallbackBase< Request, Result > &  )
private

Copying not allowed.

Member Function Documentation

template<class Request , class Result >
virtual Result* ca_mgm::CallbackBase< Request, Result >::call ( const Request *  request)
inlinevirtual

Call method for the caller function executing a callback.

Parameters
requestRead-Only pointer to the callback request.
Returns
A pointer to a new result object returned by the callback method or NULL in case of execution errors. The object has to be deleted by the caller if not longer needed.
Exceptions
std::bad_allocand maybe other, callback() method implementation specific exceptions.
template<class Request , class Result >
virtual Result* ca_mgm::CallbackBase< Request, Result >::callback ( const Request *  request)
protectedpure virtual

Callback method that has to be implemented by the user and delivers the result for to the request back to the caller.

Parameters
requestRead-Only pointer to the callback request.
Returns
A pointer to a new result object or NULL for execution error conditions. The object will be deleted by the caller.
Exceptions
std::bad_allocand maybe other, implementation specific exceptions.
template<class Request , class Result >
CallbackBase& ca_mgm::CallbackBase< Request, Result >::operator= ( const CallbackBase< Request, Result > &  )
private

Copying not allowed.


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