#include <Task_T.h>
Inheritance diagram for ACE_Task<>:
Public Member Functions | |
ACE_Task (ACE_Thread_Manager *thr_mgr=0, ACE_Message_Queue< ACE_SYNCH_USE > *mq=0) | |
virtual | ~ACE_Task (void) |
Destructor. | |
ACE_Message_Queue< ACE_SYNCH_USE > * | msg_queue (void) |
Gets the message queue associated with this task. | |
void | msg_queue (ACE_Message_Queue< ACE_SYNCH_USE > *) |
Sets the message queue associated with this task. | |
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 *, ACE_Time_Value *timeout=0) |
int | put_next (ACE_Message_Block *msg, ACE_Time_Value *timeout=0) |
int | can_put (ACE_Message_Block *) |
const ACE_TCHAR * | name (void) const |
ACE_Task< ACE_SYNCH_USE > * | next (void) |
Get next Task pointer. | |
void | next (ACE_Task< ACE_SYNCH_USE > *) |
Set next Task pointer. | |
ACE_Task< ACE_SYNCH_USE > * | sibling (void) |
ACE_Module< ACE_SYNCH_USE > * | module (void) const |
Return the Task's Module if there is one, else returns 0. | |
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. | |
void | dump (void) const |
Dump the state of an object. | |
Public Attributes | |
ACE_Message_Queue< ACE_SYNCH_USE > * | msg_queue_ |
Queue of messages on the ACE_Task.. | |
bool | delete_msg_queue_ |
true if should delete Message_Queue, false otherwise. | |
ACE_Module< ACE_SYNCH_USE > * | mod_ |
Back-pointer to the enclosing module. | |
ACE_Task< ACE_SYNCH_USE > * | next_ |
Pointer to adjacent ACE_Task. | |
ACE_ALLOC_HOOK_DECLARE | |
Declare the dynamic allocation hooks. | |
Private Member Functions | |
void | operator= (const ACE_Task< _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T > &) |
ACE_Task (const ACE_Task< _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T > &) | |
Friends | |
class | ACE_Module< ACE_SYNCH_USE > |
class | ACE_Module_Type |
This class serves as the basis for passive and active objects in ACE.
Definition at line 42 of file Task_T.h.
ACE_Task<>::ACE_Task | ( | ACE_Thread_Manager * | thr_mgr = 0 , |
|
ACE_Message_Queue< ACE_SYNCH_USE > * | 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.
ACE_Task<>::ACE_Task | ( | const ACE_Task< _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T > & | ) | [private] |
int ACE_Task<>::can_put | ( | ACE_Message_Block * | ) |
Tests whether we can enqueue a message without blocking.
void ACE_Task<>::dump | ( | void | ) | const |
Dump the state of an object.
Reimplemented in ACE_Stream_Head<>, ACE_Stream_Tail<>, ACE_Thru_Task<>, ACE_Svc_Handler<, >, ACE_Buffered_Svc_Handler<, >, and ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.
Referenced by ACE_Stream<>::dump().
int ACE_Task<>::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>.
Referenced by ACE_Stream_Tail<>::canonical_flush(), and ACE_Module< ACE_SYNCH_USE >::close_i().
int ACE_Task<>::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.
Referenced by ACE_Stream<>::get().
ACE_Module<ACE_SYNCH_USE>* ACE_Task<>::module | ( | void | ) | const |
Return the Task's Module if there is one, else returns 0.
void ACE_Task<>::msg_queue | ( | ACE_Message_Queue< ACE_SYNCH_USE > * | ) |
Sets the message queue associated with this task.
ACE_Message_Queue<ACE_SYNCH_USE>* ACE_Task<>::msg_queue | ( | void | ) |
Gets the message queue associated with this task.
Return the name of the enclosing Module if there's one associated with the Task, else returns 0.
Referenced by ACE_Stream<>::dump().
Set next Task pointer.
Get next Task pointer.
Referenced by ACE_Module< ACE_SYNCH_USE >::close_i(), ACE_Stream<>::dump(), ACE_Module< ACE_SYNCH_USE >::link(), ACE_Stream<>::link_i(), ACE_Stream<>::pop(), ACE_Stream<>::push_module(), ACE_Stream<>::replace(), and ACE_Stream<>::unlink_i().
void ACE_Task<>::operator= | ( | const ACE_Task< _ACE_SYNCH_MUTEX_T, _ACE_SYNCH_CONDITION_T > & | ) | [private] |
int ACE_Task<>::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.
Referenced by ACE_Task< ACE_SYNCH_USE >::reply().
int ACE_Task<>::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<>::reply | ( | ACE_Message_Block * | , | |
ACE_Time_Value * | timeout = 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.
ACE_Message_Block | Pointer to the block that is used in the reply. | |
timeout | 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. |
Return the Task's sibling if there's one associated with the Task's Module, else returns 0.
Referenced by ACE_Task< ACE_SYNCH_USE >::reply().
int ACE_Task<>::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<>::water_marks | ( | ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds | , | |
size_t | ||||
) |
friend class ACE_Module< ACE_SYNCH_USE > [friend] |
friend class ACE_Module_Type [friend] |
ACE_Task<>::ACE_ALLOC_HOOK_DECLARE |
Declare the dynamic allocation hooks.
Reimplemented in ACE_Stream_Head<>, ACE_Stream_Tail<>, and ACE_Thru_Task<>.
bool ACE_Task<>::delete_msg_queue_ |
true if should delete Message_Queue, false otherwise.
Definition at line 157 of file Task_T.h.
Referenced by ACE_Task< ACE_SYNCH_USE >::ACE_Task(), ACE_Task< ACE_SYNCH_USE >::msg_queue(), and ACE_Task< ACE_SYNCH_USE >::~ACE_Task().
ACE_Module<ACE_SYNCH_USE>* ACE_Task<>::mod_ |
Back-pointer to the enclosing module.
Definition at line 160 of file Task_T.h.
Referenced by ACE_Task< ACE_SYNCH_USE >::module(), ACE_Task< ACE_SYNCH_USE >::name(), ACE_Module< ACE_SYNCH_USE >::open(), ACE_Module< ACE_SYNCH_USE >::reader(), ACE_Task< ACE_SYNCH_USE >::sibling(), and ACE_Module< ACE_SYNCH_USE >::writer().
ACE_Message_Queue<ACE_SYNCH_USE>* ACE_Task<>::msg_queue_ |
Queue of messages on the ACE_Task..
Definition at line 154 of file Task_T.h.
Referenced by ACE_Task< ACE_SYNCH_USE >::ACE_Task(), ACE_Task< ACE_SYNCH_USE >::dump(), ACE_Task< ACE_SYNCH_USE >::flush(), ACE_Task< ACE_SYNCH_USE >::getq(), ACE_Task< ACE_SYNCH_USE >::msg_queue(), ACE_Task< ACE_SYNCH_USE >::putq(), ACE_Task< ACE_SYNCH_USE >::ungetq(), ACE_Task< ACE_SYNCH_USE >::water_marks(), and ACE_Task< ACE_SYNCH_USE >::~ACE_Task().
Pointer to adjacent ACE_Task.
Definition at line 163 of file Task_T.h.
Referenced by ACE_Task< ACE_SYNCH_USE >::next(), and ACE_Task< ACE_SYNCH_USE >::put_next().