Dv::Thread::ActorPool< HandlerFactory > Class Template Reference

Requirements on HandlerFactory:. More...

#include <actorpool.h>

Inheritance diagram for Dv::Thread::ActorPool< HandlerFactory >:
Inheritance graph
[legend]
Collaboration diagram for Dv::Thread::ActorPool< HandlerFactory >:
Collaboration graph
[legend]

List of all members.

Classes

class  Actor

Public Types

typedef HandlerFactory::Handler Handler
typedef Handler::argument_type Message
typedef Handler::result_type Reply
typedef MailBox< ReplyReplyBox
typedef std::pair< Message,
ReplyBox * > 
MessageReply

Public Member Functions

 ActorPool (const std::string &name, HandlerFactory &factory, size_t n_threads, size_t max_capacity=0, unsigned int min_debug_level=0, Debugable *debug_master=0)
 ~ActorPool ()
int main ()
 Main function of thread.
void request (const Message &m, ReplyBox *r=0)
const std::string & name () const

Private Attributes

const std::string name_
HandlerFactory & factory_
size_t n_threads_
std::vector< Actor * > actors_
MailBox< MessageReplymbox_

Detailed Description

template<typename HandlerFactory>
class Dv::Thread::ActorPool< HandlerFactory >

Requirements on HandlerFactory:.

 class HandlerFactory {
   class Handler: public std::unary_function<Message, Reply> {
     Reply operator()(const Message&);
   }
   Handler* create() ; // create and start new worker
   void work(); // do something useful or sleep(2)
 };

Member Typedef Documentation

template<typename HandlerFactory>
typedef HandlerFactory::Handler Dv::Thread::ActorPool< HandlerFactory >::Handler
template<typename HandlerFactory>
typedef Handler::argument_type Dv::Thread::ActorPool< HandlerFactory >::Message
template<typename HandlerFactory>
typedef Handler::result_type Dv::Thread::ActorPool< HandlerFactory >::Reply
template<typename HandlerFactory>
typedef MailBox<Reply> Dv::Thread::ActorPool< HandlerFactory >::ReplyBox
template<typename HandlerFactory>
typedef std::pair<Message,ReplyBox*> Dv::Thread::ActorPool< HandlerFactory >::MessageReply

Constructor & Destructor Documentation

template<typename HandlerFactory>
Dv::Thread::ActorPool< HandlerFactory >::ActorPool ( const std::string &  name,
HandlerFactory &  factory,
size_t  n_threads,
size_t  max_capacity = 0,
unsigned int  min_debug_level = 0,
Debugable debug_master = 0 
) [inline]
template<typename HandlerFactory>
Dv::Thread::ActorPool< HandlerFactory >::~ActorPool (  )  [inline]

Member Function Documentation

template<typename HandlerFactory>
int Dv::Thread::ActorPool< HandlerFactory >::main (  )  [inline, virtual]

Main function of thread.

Returns:
the value to keep in status Note that this function should not throw any exceptions except integers. The library will catch any exception e that is thrown erroneously, print e.what() on cerr and return an exit status of BAD_EXCEPTION.
See also:
Dv::Thread::Thread::start
Dv::Thread::Thread::BAD_EXCEPTION
Dv::Thread::Thread::exit
Dv::Thread::Thread::set_status

Reimplemented from Dv::Thread::Thread.

References Dv::Thread::ActorPool< HandlerFactory >::actors_, Dv::Thread::Thread::detach(), Dv::Thread::ActorPool< HandlerFactory >::factory_, Dv::Thread::Thread::killed(), Dv::Thread::ActorPool< HandlerFactory >::n_threads_, and Dv::Thread::ActorPool< HandlerFactory >::name().

template<typename HandlerFactory>
void Dv::Thread::ActorPool< HandlerFactory >::request ( const Message m,
ReplyBox r = 0 
) [inline]
template<typename HandlerFactory>
const std::string& Dv::Thread::ActorPool< HandlerFactory >::name (  )  const [inline]

Member Data Documentation

template<typename HandlerFactory>
const std::string Dv::Thread::ActorPool< HandlerFactory >::name_ [private]
template<typename HandlerFactory>
HandlerFactory& Dv::Thread::ActorPool< HandlerFactory >::factory_ [private]
template<typename HandlerFactory>
size_t Dv::Thread::ActorPool< HandlerFactory >::n_threads_ [private]
template<typename HandlerFactory>
std::vector<Actor*> Dv::Thread::ActorPool< HandlerFactory >::actors_ [private]
template<typename HandlerFactory>
MailBox<MessageReply> Dv::Thread::ActorPool< HandlerFactory >::mbox_ [private]

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

dvthread-0.13.4 [11 December, 2009]