qlib::ace::Callback_Manager< Seq, CallBack > Class Template Reference

callback manager More...

#include <Callbacks.h>

List of all members.

Public Types

enum  { ADD_REPLACE, ADD_WARNING }
typedef Seq sequence_type
typedef CallBack callback_type
typedef callback_typecallback_pointer
typedef callback_typecallback_reference
typedef std::map< Seq, callback_pointercontainer_type

Public Member Functions

 Callback_Manager (void)
 constructor
 ~Callback_Manager (void)
 desctructor
int add (param_type seq_id, callback_pointer callback, int option=ADD_REPLACE)
 add a callback into callback manager
int callback (param_type seq_id)
 invoke the callback object
int callback (param_type seq_id, typename callback_type::result_type *result)
 invoke the callback object with async result
int cancel (param_type seq_id)
 call cancel method of a callback object
callback_pointer find (param_type seq_id)
 find a callback and return the point
container_type::size_type size (void)
 how many callback objects there are

Protected Member Functions

int dispose (param_type seq_id, int return_value)

Private Types

typedef call_traits< Seq
>::param_type 
param_type

Private Attributes

container_type callbacks_


Detailed Description

template<typename Seq, typename CallBack>
class qlib::ace::Callback_Manager< Seq, CallBack >

callback manager

Definition at line 86 of file Callbacks.h.


Member Typedef Documentation

template<typename Seq, typename CallBack>
typedef call_traits<Seq>::param_type qlib::ace::Callback_Manager< Seq, CallBack >::param_type [private]

Definition at line 87 of file Callbacks.h.

template<typename Seq, typename CallBack>
typedef Seq qlib::ace::Callback_Manager< Seq, CallBack >::sequence_type

Definition at line 90 of file Callbacks.h.

template<typename Seq, typename CallBack>
typedef CallBack qlib::ace::Callback_Manager< Seq, CallBack >::callback_type

Definition at line 92 of file Callbacks.h.

template<typename Seq, typename CallBack>
typedef callback_type* qlib::ace::Callback_Manager< Seq, CallBack >::callback_pointer

Definition at line 93 of file Callbacks.h.

template<typename Seq, typename CallBack>
typedef callback_type& qlib::ace::Callback_Manager< Seq, CallBack >::callback_reference

Definition at line 94 of file Callbacks.h.

template<typename Seq, typename CallBack>
typedef std::map<Seq, callback_pointer> qlib::ace::Callback_Manager< Seq, CallBack >::container_type

Definition at line 97 of file Callbacks.h.


Member Enumeration Documentation

template<typename Seq, typename CallBack>
anonymous enum

Enumerator:
ADD_REPLACE 
ADD_WARNING 

Definition at line 89 of file Callbacks.h.


Constructor & Destructor Documentation

template<typename Seq, typename CallBack>
qlib::ace::Callback_Manager< Seq, CallBack >::Callback_Manager ( void   )  [inline]

constructor

Definition at line 100 of file Callbacks.h.

template<typename Seq, typename CallBack>
qlib::ace::Callback_Manager< Seq, CallBack >::~Callback_Manager ( void   )  [inline]

desctructor

Definition at line 102 of file Callbacks.h.

References qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_.


Member Function Documentation

template<typename Seq, typename Result>
int qlib::ace::Callback_Manager< Seq, Result >::add ( param_type  seq_id,
callback_pointer  callback,
int  option = ADD_REPLACE 
)

add a callback into callback manager

Parameters:
seq_id sequence id of this callback
callback pointer to a callback object, this manager will get the ownership of callback object
option decide whether need to delete a existed callback that has same sequence id
Note:
: Invoke the exec() of command, the action depends on the return value of exec(). >0 for delete this callback instance and remove it from container, =0 for remove it from map, <0 for don't remove it
Returns:
0 on success, -1 on error, 1 on the seq_id is used

Definition at line 22 of file Callbacks.inl.

References qlib::ace::Callback_Manager< Seq, CallBack >::ADD_REPLACE, qlib::ace::Callback_Manager< Seq, CallBack >::ADD_WARNING, and qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_.

template<typename Seq, typename Result>
int qlib::ace::Callback_Manager< Seq, Result >::callback ( param_type  seq_id  ) 

invoke the callback object

Note:
: Invoke the exec() of command, the action depends on the return value of exec(). >0 for delete this callback instance and remove it from container, =0 for remove it from map, <0 for don't remove it
Returns:
0 on ok, -1 on callback is not existed

Definition at line 41 of file Callbacks.inl.

References qlib::ace::Callback_Manager< Seq, CallBack >::dispose(), and qlib::ace::Callback_Manager< Seq, CallBack >::find().

template<typename Seq, typename Result>
int qlib::ace::Callback_Manager< Seq, Result >::callback ( param_type  seq_id,
typename callback_type::result_type *  result 
)

invoke the callback object with async result

See also:
callback(seq_id)

Definition at line 53 of file Callbacks.inl.

References qlib::ace::Callback_Manager< Seq, CallBack >::dispose(), and qlib::ace::Callback_Manager< Seq, CallBack >::find().

template<typename Seq, typename Result>
int qlib::ace::Callback_Manager< Seq, Result >::cancel ( param_type  seq_id  ) 

call cancel method of a callback object

Note:
the return value of callback cancel method should be: >0 for delete this callback instance and remove it from container, =0 for remove it from map, <0 for don't remove it
Returns:

Definition at line 83 of file Callbacks.inl.

References qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_, and qlib::ace::Callback_Manager< Seq, CallBack >::find().

template<typename Seq, typename CallBack>
callback_pointer qlib::ace::Callback_Manager< Seq, CallBack >::find ( param_type  seq_id  )  [inline]

find a callback and return the point

Parameters:
seq_id sequence id
Returns:
NULL on not found

Definition at line 160 of file Callbacks.h.

References qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_.

Referenced by qlib::ace::Callback_Manager< Seq, CallBack >::callback(), qlib::ace::Callback_Manager< Seq, CallBack >::cancel(), and qlib::ace::Callback_Manager< Seq, CallBack >::dispose().

template<typename Seq, typename CallBack>
container_type::size_type qlib::ace::Callback_Manager< Seq, CallBack >::size ( void   )  [inline]

how many callback objects there are

Definition at line 169 of file Callbacks.h.

References qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_.

template<typename Seq, typename Result>
int qlib::ace::Callback_Manager< Seq, Result >::dispose ( param_type  seq_id,
int  return_value 
) [protected]

Definition at line 66 of file Callbacks.inl.

References qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_, and qlib::ace::Callback_Manager< Seq, CallBack >::find().

Referenced by qlib::ace::Callback_Manager< Seq, CallBack >::callback().


Member Data Documentation

template<typename Seq, typename CallBack>
container_type qlib::ace::Callback_Manager< Seq, CallBack >::callbacks_ [private]

Definition at line 173 of file Callbacks.h.

Referenced by qlib::ace::Callback_Manager< Seq, CallBack >::add(), qlib::ace::Callback_Manager< Seq, CallBack >::cancel(), qlib::ace::Callback_Manager< Seq, CallBack >::dispose(), qlib::ace::Callback_Manager< Seq, CallBack >::find(), qlib::ace::Callback_Manager< Seq, CallBack >::size(), and qlib::ace::Callback_Manager< Seq, CallBack >::~Callback_Manager().


The documentation for this class was generated from the following files:
Generated on Fri Jun 8 22:49:25 2007 for qlib::ace by  doxygen 1.5.1