limal::CallbackBase< Request, Result > Class Template Reference

LiMaL callback interface base class. More...

#include <CallbackBase.hpp>

List of all members.

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 limal::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 >
limal::CallbackBase< Request, Result >::CallbackBase (  )  [inline]

Default constructor.

template<class Request , class Result >
virtual limal::CallbackBase< Request, Result >::~CallbackBase (  )  [inline, virtual]

Destructor.

template<class Request , class Result >
limal::CallbackBase< Request, Result >::CallbackBase ( const CallbackBase< Request, Result > &   )  [private]

Copying not allowed.


Member Function Documentation

template<class Request , class Result >
virtual Result* limal::CallbackBase< Request, Result >::call ( const Request *  request  )  [inline, virtual]

Call method for the caller function executing a callback.

Parameters:
request Read-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_alloc and maybe other, callback() method implementation specific exceptions.
template<class Request , class Result >
virtual Result* limal::CallbackBase< Request, Result >::callback ( const Request *  request  )  [protected, pure virtual]

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

Parameters:
request Read-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_alloc and maybe other, implementation specific exceptions.
template<class Request , class Result >
CallbackBase& limal::CallbackBase< Request, Result >::operator= ( const CallbackBase< Request, Result > &   )  [private]

Copying not allowed.


The documentation for this class was generated from the following file:
Generated on Mon Jul 5 22:01:31 2010 for limal by  doxygen 1.6.3