ACE  6.3.3
Public Member Functions | Public Attributes | Private Member Functions | Friends | List of all members
ACE_Task< ACE_SYNCH_DECL, TIME_POLICY > Class Template Reference

Primary interface for application message processing, as well as input and output message queueing. More...

#include <Task_T.h>

Inheritance diagram for ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >:
Inheritance graph
[legend]
Collaboration diagram for ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >:
Collaboration graph
[legend]

Public Member Functions

 ACE_Task (ACE_Thread_Manager *thr_mgr=0, ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > *mq=0)
 
virtual ~ACE_Task (void)
 Destructor. More...
 
ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > * msg_queue (void)
 Gets the message queue associated with this task. More...
 
void msg_queue (ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > *)
 Sets the message queue associated with this task. More...
 
ACE_Time_Value_T< TIME_POLICY > gettimeofday (void) const
 
void set_time_policy (TIME_POLICY const &time_policy)
 
int putq (ACE_Message_Block *, ACE_Time_Value *timeout=0)
 
int getq (ACE_Message_Block *&mb, ACE_Time_Value *timeout=0)
 
int ungetq (ACE_Message_Block *, ACE_Time_Value *timeout=0)
 
int reply (ACE_Message_Block *mb, ACE_Time_Value *tv=0)
 
int put_next (ACE_Message_Block *msg, ACE_Time_Value *timeout=0)
 
const ACE_TCHARname (void) const
 
ACE_Task< ACE_SYNCH_USE, TIME_POLICY > * next (void)
 Get next Task pointer. More...
 
void next (ACE_Task< ACE_SYNCH_USE, TIME_POLICY > *)
 Set next Task pointer. More...
 
ACE_Task< ACE_SYNCH_USE, TIME_POLICY > * sibling (void)
 
ACE_Module< ACE_SYNCH_USE, TIME_POLICY > * module (void) const
 Return the Task's Module if there is one, else returns 0. More...
 
int flush (u_long flag=ACE_Task_Flags::ACE_FLUSHALL)
 
void water_marks (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds, size_t)
 Manipulate watermarks. More...
 
void dump (void) const
 Dump the state of an object. More...
 
- Public Member Functions inherited from ACE_Task_Base
 ACE_Task_Base (ACE_Thread_Manager *=0)
 Constructor. More...
 
virtual ~ACE_Task_Base (void)
 Destructor. More...
 
virtual int open (void *args=0)
 Default ACE_Task open routine. More...
 
virtual int close (u_long flags=0)
 Default ACE_Task close routine. More...
 
virtual int module_closed (void)
 
virtual int put (ACE_Message_Block *, ACE_Time_Value *=0)
 Default ACE_Task put routine. More...
 
virtual int svc (void)
 Run by a daemon thread to handle deferred processing. More...
 
virtual int activate (long flags=THR_NEW_LWP|THR_JOINABLE|THR_INHERIT_SCHED, int n_threads=1, int force_active=0, long priority=ACE_DEFAULT_THREAD_PRIORITY, int grp_id=-1, ACE_Task_Base *task=0, ACE_hthread_t thread_handles[]=0, void *stack[]=0, size_t stack_size[]=0, ACE_thread_t thread_ids[]=0, const char *thr_name[]=0)
 
virtual int wait (void)
 Wait for all threads running in a task to exit. More...
 
virtual int suspend (void)
 Suspend a task. More...
 
virtual int resume (void)
 Resume a suspended task. More...
 
int grp_id (void) const
 Get the current group id. More...
 
void grp_id (int)
 Set the current group id. More...
 
ACE_Thread_Managerthr_mgr (void) const
 Get the thread manager associated with this Task. More...
 
void thr_mgr (ACE_Thread_Manager *)
 Set the thread manager associated with this Task. More...
 
int is_reader (void) const
 True if queue is a reader, else false. More...
 
int is_writer (void) const
 True if queue is a writer, else false. More...
 
size_t thr_count (void) const
 
ACE_thread_t last_thread (void) const
 
- Public Member Functions inherited from ACE_Service_Object
 ACE_Service_Object (ACE_Reactor *=0)
 Constructor. More...
 
virtual ~ACE_Service_Object (void)
 Destructor. More...
 
- Public Member Functions inherited from ACE_Event_Handler
virtual ~ACE_Event_Handler (void)
 Destructor is virtual to enable proper cleanup. More...
 
virtual ACE_HANDLE get_handle (void) const
 Get the I/O handle. More...
 
virtual void set_handle (ACE_HANDLE)
 Set the I/O handle. More...
 
virtual int priority (void) const
 
virtual void priority (int priority)
 Set the priority of the Event_Handler. More...
 
virtual int handle_input (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when input events occur (e.g., connection or data). More...
 
virtual int handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 
virtual int handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Called when an exceptional events occur (e.g., SIGURG). More...
 
virtual int handle_timeout (const ACE_Time_Value &current_time, const void *act=0)
 
virtual int handle_exit (ACE_Process *)
 Called when a process exits. More...
 
virtual int handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)
 
virtual int handle_signal (int signum, siginfo_t *=0, ucontext_t *=0)
 
virtual int resume_handler (void)
 
virtual int handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE)
 
virtual int handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE)
 
virtual void reactor (ACE_Reactor *reactor)
 Set the event demultiplexors. More...
 
virtual ACE_Reactorreactor (void) const
 Get the event demultiplexors. More...
 
virtual ACE_Reactor_Timer_Interfacereactor_timer_interface (void) const
 Get only the reactor's timer related interface. More...
 
virtual Reference_Count add_reference (void)
 Increment reference count on the handler. More...
 
virtual Reference_Count remove_reference (void)
 Decrement reference count on the handler. More...
 
Reference_Counting_Policyreference_counting_policy (void)
 Current Reference_Counting_Policy. More...
 
- Public Member Functions inherited from ACE_Shared_Object
 ACE_Shared_Object (void)
 Constructor. More...
 
virtual ~ACE_Shared_Object (void)
 Destructor. More...
 
virtual int init (int argc, ACE_TCHAR *argv[])
 Initializes object when dynamic linking occurs. More...
 
virtual int fini (void)
 Terminates object when dynamic unlinking occurs. More...
 
virtual int info (ACE_TCHAR **info_string, size_t length=0) const
 Returns information on a service object. More...
 

Public Attributes

ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > * msg_queue_
 Queue of messages on the ACE_Task.. More...
 
bool delete_msg_queue_
 true if should delete Message_Queue, false otherwise. More...
 
ACE_Module< ACE_SYNCH_USE, TIME_POLICY > * mod_
 Back-pointer to the enclosing module. More...
 
ACE_Task< ACE_SYNCH_USE, TIME_POLICY > * next_
 Pointer to adjacent ACE_Task. More...
 
 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Private Member Functions

void operator= (const ACE_Task< _ACE_SYNCH, TIME_POLICY > &)
 
 ACE_Task (const ACE_Task< _ACE_SYNCH, TIME_POLICY > &)
 

Friends

class ACE_Module< ACE_SYNCH_USE, TIME_POLICY >
 
class ACE_Module_Type
 

Additional Inherited Members

- Public Types inherited from ACE_Event_Handler
enum  {
  LO_PRIORITY = 0, HI_PRIORITY = 10, NULL_MASK = 0, READ_MASK = (1 << 0),
  WRITE_MASK = (1 << 1), EXCEPT_MASK = (1 << 2), ACCEPT_MASK = (1 << 3), CONNECT_MASK = (1 << 4),
  TIMER_MASK = (1 << 5), QOS_MASK = (1 << 6), GROUP_QOS_MASK = (1 << 7), SIGNAL_MASK = (1 << 8),
  ALL_EVENTS_MASK, RWE_MASK, DONT_CALL = (1 << 9)
}
 
enum  { ACE_EVENT_HANDLER_NOT_RESUMED = -1, ACE_REACTOR_RESUMES_HANDLER = 0, ACE_APPLICATION_RESUMES_HANDLER }
 
typedef long Reference_Count
 Reference count type. More...
 
- Static Public Member Functions inherited from ACE_Task_Base
static ACE_THR_FUNC_RETURN svc_run (void *)
 Routine that runs the service routine as a daemon thread. More...
 
static void cleanup (void *object, void *params)
 
- Static Public Member Functions inherited from ACE_Event_Handler
static ACE_THR_FUNC_RETURN read_adapter (void *event_handler)
 
static int register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED)
 
static int remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr)
 Performs the inverse of the register_stdin_handler() method. More...
 
- Protected Types inherited from ACE_Event_Handler
typedef ACE_Atomic_Op< ACE_SYNCH_MUTEX, Reference_CountAtomic_Reference_Count
 Typedef for implementation of reference counting. More...
 
- Protected Member Functions inherited from ACE_Event_Handler
 ACE_Event_Handler (ACE_Reactor *=0, int priority=ACE_Event_Handler::LO_PRIORITY)
 Force ACE_Event_Handler to be an abstract base class. More...
 
- Protected Attributes inherited from ACE_Task_Base
size_t thr_count_
 
ACE_Thread_Managerthr_mgr_
 Multi-threading manager. More...
 
u_long flags_
 ACE_Task flags. More...
 
int grp_id_
 This maintains the group id of the Task. More...
 
ACE_thread_t last_thread_id_
 Holds the thread ID of the last thread to exit svc() in this object. More...
 
- Protected Attributes inherited from ACE_Event_Handler
Atomic_Reference_Count reference_count_
 Reference count. More...
 

Detailed Description

template<ACE_SYNCH_DECL, class TIME_POLICY = ACE_System_Time_Policy>
class ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >

Primary interface for application message processing, as well as input and output message queueing.

This class serves as the basis for passive and active objects in ACE.

Constructor & Destructor Documentation

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::ACE_Task ( ACE_Thread_Manager thr_mgr = 0,
ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > *  mq = 0 
)

Initialize a Task, supplying a thread manager and a message queue. If the user doesn't supply a ACE_Message_Queue pointer then we'll allocate one dynamically. Otherwise, we'll use the one passed as a parameter.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
virtual ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::~ACE_Task ( void  )
virtual

Destructor.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::ACE_Task ( const ACE_Task< _ACE_SYNCH, TIME_POLICY > &  )
private

Member Function Documentation

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::dump ( void  ) const

Dump the state of an object.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::flush ( u_long  flag = ACE_Task_Flags::ACE_FLUSHALL)

Flush the task's queue, i.e., free all of the enqueued message blocks and unblocks any threads waiting on the queue. Note that if this conflicts with the C++ iostream <flush> function, just rewrite the iostream function as ::<flush>.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::getq ( ACE_Message_Block *&  mb,
ACE_Time_Value timeout = 0 
)

Extract the first message from the queue (blocking). Note that timeout uses <{absolute}> time rather than <{relative}> time. Returns number of items in queue if the call succeeds or -1 otherwise.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Time_Value_T<TIME_POLICY> ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::gettimeofday ( void  ) const

Get the current time of day according to the queue's TIME_POLICY. Allows users to initialize timeout values using correct time policy.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Module<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::module ( void  ) const

Return the Task's Module if there is one, else returns 0.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Message_Queue<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::msg_queue ( void  )

Gets the message queue associated with this task.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::msg_queue ( ACE_Message_Queue< ACE_SYNCH_USE, TIME_POLICY > *  )

Sets the message queue associated with this task.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
const ACE_TCHAR* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::name ( void  ) const

Return the name of the enclosing Module if there's one associated with the Task, else returns 0.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next ( void  )

Get next Task pointer.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next ( ACE_Task< ACE_SYNCH_USE, TIME_POLICY > *  )

Set next Task pointer.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::operator= ( const ACE_Task< _ACE_SYNCH, TIME_POLICY > &  )
private
template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::put_next ( ACE_Message_Block msg,
ACE_Time_Value timeout = 0 
)

Transfer message to the adjacent ACE_Task in a ACE_Stream. Note that timeout uses <{absolute}> time rather than <{relative}> time.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::putq ( ACE_Message_Block ,
ACE_Time_Value timeout = 0 
)

Insert message into the message queue. Note that timeout uses <{absolute}> time rather than <{relative}> time.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::reply ( ACE_Message_Block mb,
ACE_Time_Value tv = 0 
)

Turn the message around, sending it in the opposite direction in the stream. To do this, the message is put onto the task next in the stream after this task's sibling.

Parameters
mbPointer to the block that is used in the reply.
tvThe absolute time at which the put operation used to send the message block to the next module in the stream will time out. If 0, this call blocks until it can be completed.
template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::set_time_policy ( TIME_POLICY const &  time_policy)

Allows applications to control how the timer queue gets the time of day.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::sibling ( void  )

Return the Task's sibling if there's one associated with the Task's Module, else returns 0.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
int ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::ungetq ( ACE_Message_Block ,
ACE_Time_Value timeout = 0 
)

Return a message to the queue. Note that timeout uses <{absolute}> time rather than <{relative}> time.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::water_marks ( ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds  ,
size_t   
)

Manipulate watermarks.

Friends And Related Function Documentation

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
friend class ACE_Module< ACE_SYNCH_USE, TIME_POLICY >
friend
template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
friend class ACE_Module_Type
friend

Member Data Documentation

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
bool ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::delete_msg_queue_

true if should delete Message_Queue, false otherwise.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Module<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::mod_

Back-pointer to the enclosing module.

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Message_Queue<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::msg_queue_

Queue of messages on the ACE_Task..

template<ACE_SYNCH_DECL , class TIME_POLICY = ACE_System_Time_Policy>
ACE_Task<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next_

Pointer to adjacent ACE_Task.


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