ACE_Reactive_MEM_IO Class Reference

#include <MEM_IO.h>

Inheritance diagram for ACE_Reactive_MEM_IO:

Inheritance graph
[legend]
Collaboration diagram for ACE_Reactive_MEM_IO:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ACE_Reactive_MEM_IO (void)
virtual ~ACE_Reactive_MEM_IO (void)
virtual int init (ACE_HANDLE handle, const ACE_TCHAR *name, MALLOC_OPTIONS *options)
virtual ssize_t recv_buf (ACE_MEM_SAP_Node *&buf, int flags, const ACE_Time_Value *timeout)
virtual ssize_t send_buf (ACE_MEM_SAP_Node *buf, int flags, const ACE_Time_Value *timeout)
ssize_t get_buf_len (const off_t off, ACE_MEM_SAP_Node *&buf)

Constructor & Destructor Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_Reactive_MEM_IO::ACE_Reactive_MEM_IO void   ) 
 

Definition at line 9 of file MEM_IO.inl.

00010 {
00011 }

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_Reactive_MEM_IO::~ACE_Reactive_MEM_IO void   )  [virtual]
 

Definition at line 19 of file MEM_IO.cpp.

00020 {
00021 }


Member Function Documentation

ACE_INLINE ssize_t ACE_Reactive_MEM_IO::get_buf_len const off_t  off,
ACE_MEM_SAP_Node *&  buf
 

Convert the buffer offset to absolute address to . Return the size of valid information containing in the , -1 if is not initialized.

Definition at line 51 of file MEM_IO.inl.

References ACE_SEH_EXCEPT, ACE_SEH_TRY, ACE_TRACE, ACE_MEM_SAP_Node::size(), and ssize_t.

Referenced by recv_buf().

00052 {
00053 #if !defined (ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS)
00054   ACE_TRACE ("ACE_Reactive_MEM_IO::get_buf_len");
00055 #endif /* ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS */
00056 
00057   if (this->shm_malloc_ == 0)
00058     return -1;
00059 
00060   ssize_t retv = 0;
00061 
00062   ACE_SEH_TRY
00063     {
00064       buf =
00065         reinterpret_cast<ACE_MEM_SAP_Node *> (
00066           static_cast<char *> (this->shm_malloc_->base_addr ()) + off);
00067       retv = buf->size ();
00068     }
00069   ACE_SEH_EXCEPT (this->shm_malloc_->memory_pool ().seh_selector (GetExceptionInformation ()))
00070     {
00071     }
00072 
00073   return retv;
00074 }

int ACE_Reactive_MEM_IO::init ACE_HANDLE  handle,
const ACE_TCHAR name,
MALLOC_OPTIONS options
[virtual]
 

Initialize the MEM_SAP object.

options is used to pass in the Malloc_Options to initialize underlying ACE_MMAP.

Implements ACE_MEM_SAP.

Definition at line 24 of file MEM_IO.cpp.

References ACE_TCHAR, ACE_TRACE, and ACE_MEM_SAP::create_shm_malloc().

00027 {
00028   ACE_TRACE ("ACE_Reactive_MEM_IO::init");
00029   this->handle_ = handle;
00030   return this->create_shm_malloc (name,
00031                                   options);
00032 }

ssize_t ACE_Reactive_MEM_IO::recv_buf ACE_MEM_SAP_Node *&  buf,
int  flags,
const ACE_Time_Value timeout
[virtual]
 

Fetch location of next available data into . As this operation read the address of the data off the socket using ACE::recv, timeout only applies to ACE::recv.

Implements ACE_MEM_SAP.

Definition at line 35 of file MEM_IO.cpp.

References ACE_TRACE, get_buf_len(), ACE::recv(), and ssize_t.

00038 {
00039   ACE_TRACE ("ACE_Reactive_MEM_IO::recv_buf");
00040 
00041   if (this->shm_malloc_ == 0 || this->handle_ == ACE_INVALID_HANDLE)
00042     return -1;
00043 
00044   off_t new_offset = 0;
00045   ssize_t retv = ACE::recv (this->handle_,
00046                             (char *) &new_offset,
00047                             sizeof (off_t),
00048                             flags,
00049                             timeout);
00050 
00051   if (retv == 0)
00052     {
00053       //      ACE_DEBUG ((LM_INFO, "MEM_Stream closed\n"));
00054       buf = 0;
00055       return 0;
00056     }
00057   else if (retv != sizeof (off_t))
00058     {
00059       //  Nothing available or we are really screwed.
00060       buf = 0;
00061       return -1;
00062     }
00063 
00064   return this->get_buf_len (new_offset, buf);
00065 }

ssize_t ACE_Reactive_MEM_IO::send_buf ACE_MEM_SAP_Node buf,
int  flags,
const ACE_Time_Value timeout
[virtual]
 

Wait to to amount of time to send . If times out a -1 is returned with <errno == ETIME>. If it succeeds the number of bytes sent is returned.

Implements ACE_MEM_SAP.

Definition at line 68 of file MEM_IO.cpp.

References ACE_TRACE, ACE_MEM_SAP::release_buffer(), ACE::send(), and ACE_MEM_SAP_Node::size().

00071 {
00072   ACE_TRACE ("ACE_Reactive_MEM_IO::send_buf");
00073 
00074   if (this->shm_malloc_ == 0 || this->handle_ == ACE_INVALID_HANDLE)
00075     return -1;
00076 
00077   off_t offset = reinterpret_cast<char *> (buf) -
00078     static_cast<char *> (this->shm_malloc_->base_addr ()); // the offset.
00079   // Send the offset value over the socket.
00080   if (ACE::send (this->handle_,
00081                  (const char *) &offset,
00082                  sizeof (offset),
00083                  flags,
00084                  timeout) != sizeof (offset))
00085     {
00086       // unsucessful send, release the memory in the shared-memory.
00087       this->release_buffer (buf);
00088 
00089       return -1;
00090     }
00091   return buf->size ();
00092 }


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:27:38 2006 for ACE by doxygen 1.3.6