NAME

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

SYNOPSIS

#include <ace/Svc_Handler.h>

template<ACE_PEER_STREAM_1, ACE_SYNCH_DECL> class ACE_Buffered_Svc_Handler : public ACE_Svc_Handler<ACE_PEER_STREAM_2, ACE_SYNCH_USE> { public: 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); 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; protected: size_t maximum_buffer_size_; size_t current_buffer_size_; ACE_Time_Value next_timeout_; ACE_Time_Value interval_; ACE_Time_Value *timeoutp_; };

DESCRIPTION

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.

Initialization and termination methods.

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);

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;

AUTHOR

Doug Schmidt and Irfan Pyrarli.

LIBRARY

ace