ACE  6.0.6
Public Member Functions | Protected Member Functions | Protected Attributes
ACE_Buffered_Svc_Handler Class Reference

Defines the interface for a service that exchanges data with its connected peer and supports buffering. More...

#include <Svc_Handler.h>

Inheritance diagram for ACE_Buffered_Svc_Handler:
Inheritance graph
[legend]
Collaboration diagram for ACE_Buffered_Svc_Handler:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACE_Buffered_Svc_Handler (ACE_Thread_Manager *thr_mgr=0, ACE_Message_Queue< ACE_SYNCH_USE > *mq=0, ACE_Reactor *reactor=ACE_Reactor::instance(), size_t max_buffer_size=0, ACE_Time_Value *relative_timeout=0)
virtual ~ACE_Buffered_Svc_Handler (void)
 Destructor, which calls <flush>.
virtual int put (ACE_Message_Block *message_block, ACE_Time_Value *timeout=0)
virtual int flush (void)
virtual int handle_timeout (const ACE_Time_Value &time, const void *)
void dump (void) const
 Dump the state of an object.

Protected Member Functions

virtual int flush_i (void)

Protected Attributes

size_t maximum_buffer_size_
size_t current_buffer_size_
 Current size in bytes of the <Message_Queue> contents.
ACE_Time_Value next_timeout_
 Timeout value used to control when the buffer is flushed.
ACE_Time_Value interval_
 Interval of the timeout.
ACE_Time_Valuetimeoutp_
 Timeout pointer.

Detailed Description

Defines the interface for a service that exchanges data with its connected peer and supports buffering.

The buffering feature makes it possible to queue up ACE_Message_Blocks in an ACE_Message_Queue until (1) the queue is "full" or (2) a period of time elapses, at which point the queue is "flushed" via <sendv_n> to the peer.


Constructor & Destructor Documentation

ACE_Buffered_Svc_Handler::ACE_Buffered_Svc_Handler ( ACE_Thread_Manager thr_mgr = 0,
ACE_Message_Queue< ACE_SYNCH_USE > *  mq = 0,
ACE_Reactor reactor = ACE_Reactor::instance (),
size_t  max_buffer_size = 0,
ACE_Time_Value relative_timeout = 0 
)

Constructor initializes the thr_mgr and mq by passing them down to the ACE_Task base class. The reactor is passed to the ACE_Event_Handler. The max_buffer_size and relative_timeout are used to determine at what point to flush the mq. By default, there's no buffering at all. The relative_timeout value is interpreted to be in a unit that's relative to the current time returned by <ACE_OS::gettimeofday>.

ACE_Buffered_Svc_Handler::~ACE_Buffered_Svc_Handler ( void  ) [virtual]

Destructor, which calls <flush>.


Member Function Documentation

void ACE_Buffered_Svc_Handler::dump ( void  ) const

Dump the state of an object.

Reimplemented from ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.

int ACE_Buffered_Svc_Handler::flush ( void  ) [virtual]

Flush the ACE_Message_Queue, which writes all the queued ACE_Message_Blocks to the <PEER_STREAM>.

int ACE_Buffered_Svc_Handler::flush_i ( void  ) [protected, virtual]

Implement the flush operation on the ACE_Message_Queue, which writes all the queued ACE_Message_Blocks to the <PEER_STREAM>. Assumes that the caller holds the lock.

int ACE_Buffered_Svc_Handler::handle_timeout ( const ACE_Time_Value time,
const void *   
) [virtual]

This method is not currently implemented -- this is where the integration with the <Reactor> would occur.

Reimplemented from ACE_Svc_Handler< ACE_PEER_STREAM_2, ACE_SYNCH_USE >.

int ACE_Buffered_Svc_Handler::put ( ACE_Message_Block message_block,
ACE_Time_Value timeout = 0 
) [virtual]

Insert the ACE_Message_Block chain rooted at message_block into the ACE_Message_Queue with the designated timeout. The <flush> method will be called if this <put> causes the number of bytes to exceed the maximum buffer size or if the timeout period has elapsed.


Member Data Documentation

Current size in bytes of the <Message_Queue> contents.

Interval of the timeout.

Maximum size the <Message_Queue> can be before we have to flush the buffer.

Timeout value used to control when the buffer is flushed.

Timeout pointer.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines