ACE
6.2.5
|
Primary interface for application message processing, as well as input and output message queueing. More...
#include <Task_T.h>
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_TCHAR * | name (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_Manager * | thr_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 ¤t_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_Reactor * | reactor (void) const |
Get the event demultiplexors. More... | |
virtual ACE_Reactor_Timer_Interface * | reactor_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_Policy & | reference_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_Count > | Atomic_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_Manager * | thr_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... | |
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.
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.
|
virtual |
Destructor.
|
private |
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::dump | ( | void | ) | const |
Dump the state of an object.
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>.
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.
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.
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.
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.
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.
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.
ACE_Task<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next | ( | void | ) |
Get next Task pointer.
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next | ( | ACE_Task< ACE_SYNCH_USE, TIME_POLICY > * | ) |
Set next Task pointer.
|
private |
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.
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.
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.
mb | Pointer to the block that is used in the reply. |
tv | The 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. |
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.
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.
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.
void ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::water_marks | ( | ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds | , |
size_t | |||
) |
Manipulate watermarks.
|
friend |
|
friend |
ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::ACE_ALLOC_HOOK_DECLARE |
Declare the dynamic allocation hooks.
bool ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::delete_msg_queue_ |
true if should delete Message_Queue, false otherwise.
ACE_Module<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::mod_ |
Back-pointer to the enclosing module.
ACE_Message_Queue<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::msg_queue_ |
Queue of messages on the ACE_Task..
ACE_Task<ACE_SYNCH_USE, TIME_POLICY>* ACE_Task< ACE_SYNCH_DECL, TIME_POLICY >::next_ |
Pointer to adjacent ACE_Task.