Defines the methods for the ACE shared memeory wrapper I/O routines (e.g., send/recv). The shared memory transport uses ACE_SOCK_* class to implement the signaling mechanism so we can easily use the new mechanism with the Reactor pattern (which uses select under the hood.) ACE_MEM_Acceptor and ACE_MEM_Connector are used to establish connections. When a connection is established, ACE_MEM_Acceptor creates the MMAP file for data exchange and sends the location of the file (complete path name) to ACE_MEM_Connector thru the socket. ACE_MEM_Connector then reads the location of the file off the socket and opens up the same MMAP file. ACE_MEM_Stream at each side then contains a reference to the ACE_Mallo object using the same MMAP file. When sending information using methods provided in this class, ACE_MEM_IO requests a chunk of memory from the MALLOC_TYPE object, copy the data into the shared memory and send the memory offset (from the start of the ACE_Malloc) across the socket. This action also servers as a signal to the other end. The receiving side then reverses the procedures and copies the information into user buffer. More...
#include <MEM_IO.h>


Public Types | |
| enum | Signal_Strategy { Reactive, MT } | 
Public Member Functions | |
| ACE_MEM_IO (void) | |
| Constructor.   | |
| ~ACE_MEM_IO (void) | |
| Destructor.   | |
| int | init (const ACE_TCHAR *name, ACE_MEM_IO::Signal_Strategy type=ACE_MEM_IO::Reactive, ACE_MEM_SAP::MALLOC_OPTIONS *options=0) | 
| int | fini (void) | 
| ssize_t | send (const void *buf, size_t n, int flags) | 
| ssize_t | recv (void *buf, size_t n, int flags) | 
| Recv an n byte buffer from the shm_malloc_ thru connected socket.   | |
| ssize_t | send (const void *buf, size_t n) | 
| ssize_t | recv (void *buf, size_t n) | 
| Recv an n byte buffer from the shm_malloc_ thru connected socket.   | |
| ssize_t | send (const void *buf, size_t n, const ACE_Time_Value *timeout) | 
| ssize_t | send (const void *buf, size_t n, int flags, const ACE_Time_Value *timeout) | 
| ssize_t | send (const ACE_Message_Block *message_block, const ACE_Time_Value *timeout) | 
| ssize_t | recv (void *buf, size_t n, const ACE_Time_Value *timeout) | 
| ssize_t | recv (void *buf, size_t n, int flags, const ACE_Time_Value *timeout) | 
| void | dump (void) const | 
| Dump the state of an object.   | |
Public Attributes | |
| ACE_ALLOC_HOOK_DECLARE | |
| Declare the dynamic allocation hooks.   | |
Private Member Functions | |
| ssize_t | fetch_recv_buf (int flag, const ACE_Time_Value *timeout) | 
Private Attributes | |
| ACE_MEM_SAP * | deliver_strategy_ | 
| Actual deliverying mechanism.   | |
| ACE_MEM_SAP_Node * | recv_buffer_ | 
| Internal pointer for support recv/send.   | |
| ssize_t | buf_size_ | 
| Record the current total buffer size of <recv_buffer_>.   | |
| ssize_t | cur_offset_ | 
| Record the current read pointer location in <recv_buffer_>.   | |
Defines the methods for the ACE shared memeory wrapper I/O routines (e.g., send/recv). The shared memory transport uses ACE_SOCK_* class to implement the signaling mechanism so we can easily use the new mechanism with the Reactor pattern (which uses select under the hood.) ACE_MEM_Acceptor and ACE_MEM_Connector are used to establish connections. When a connection is established, ACE_MEM_Acceptor creates the MMAP file for data exchange and sends the location of the file (complete path name) to ACE_MEM_Connector thru the socket. ACE_MEM_Connector then reads the location of the file off the socket and opens up the same MMAP file. ACE_MEM_Stream at each side then contains a reference to the ACE_Mallo object using the same MMAP file. When sending information using methods provided in this class, ACE_MEM_IO requests a chunk of memory from the MALLOC_TYPE object, copy the data into the shared memory and send the memory offset (from the start of the ACE_Malloc) across the socket. This action also servers as a signal to the other end. The receiving side then reverses the procedures and copies the information into user buffer.
| ACE_MEM_IO::ACE_MEM_IO | ( | void | ) |  [inline] | 
        
Constructor.
| ACE_MEM_IO::~ACE_MEM_IO | ( | void | ) |  [inline] | 
        
Destructor.
| void ACE_MEM_IO::dump | ( | void | ) | const | 
| ssize_t ACE_MEM_IO::fetch_recv_buf | ( | int | flag, | |
| const ACE_Time_Value * | timeout | |||
| ) |  [inline, private] | 
        
Return the local endpoint port number. Returns 0 if successful, else -1.
| int ACE_MEM_IO::fini | ( | void | ) | 
Finalizing the MEM_IO object. This method doesn't invoke the <remove> method.
| int ACE_MEM_IO::init | ( | const ACE_TCHAR * | name, | |
| ACE_MEM_IO::Signal_Strategy |  type = ACE_MEM_IO::Reactive,  | 
        |||
| ACE_MEM_SAP::MALLOC_OPTIONS * |  options = 0 | |||
| ) | 
Initialize the MEM_SAP object.
| ssize_t ACE_MEM_IO::recv | ( | void * | buf, | |
| size_t | n, | |||
| int | flags, | |||
| const ACE_Time_Value * | timeout | |||
| ) |  [inline] | 
        
Wait up to timeout amount of time to receive up to n bytes into buf from <handle> (uses the <recv> call). If <recv> times out a -1 is returned with errno == ETIME. If it succeeds the number of bytes received is returned. 
| ssize_t ACE_MEM_IO::recv | ( | void * | buf, | |
| size_t | n, | |||
| const ACE_Time_Value * | timeout | |||
| ) |  [inline] | 
        
Wait up to timeout amount of time to receive up to n bytes into buf from <handle> (uses the <recv> call). If <recv> times out a -1 is returned with errno == ETIME. If it succeeds the number of bytes received is returned. 
| ssize_t ACE_MEM_IO::recv | ( | void * | buf, | |
| size_t | n | |||
| ) |  [inline] | 
        
Recv an n byte buffer from the shm_malloc_ thru connected socket.
| ssize_t ACE_MEM_IO::recv | ( | void * | buf, | |
| size_t | n, | |||
| int | flags | |||
| ) |  [inline] | 
        
Recv an n byte buffer from the shm_malloc_ thru connected socket.
| ssize_t ACE_MEM_IO::send | ( | const ACE_Message_Block * | message_block, | |
| const ACE_Time_Value * | timeout | |||
| ) | 
Wait to to timeout amount of time to send the message_block. If <send> times out a -1 is returned with errno == ETIME. If it succeeds the number of bytes sent is returned. 
| ssize_t ACE_MEM_IO::send | ( | const void * | buf, | |
| size_t | n, | |||
| int | flags, | |||
| const ACE_Time_Value * | timeout | |||
| ) |  [inline] | 
        
Wait to to timeout amount of time to send up to n bytes into buf from <handle> (uses the <send> call). If <send> times out a -1 is returned with errno == ETIME. If it succeeds the number of bytes sent is returned. 
| ssize_t ACE_MEM_IO::send | ( | const void * | buf, | |
| size_t | n, | |||
| const ACE_Time_Value * | timeout | |||
| ) |  [inline] | 
        
Wait to to timeout amount of time to send up to n bytes into buf from <handle> (uses the <send> call). If <send> times out a -1 is returned with errno == ETIME. If it succeeds the number of bytes sent is returned. 
| ssize_t ACE_MEM_IO::send | ( | const void * | buf, | |
| size_t | n | |||
| ) |  [inline] | 
        
Send an n byte buffer to the other process using shm_malloc_ connected thru the socket.
| ssize_t ACE_MEM_IO::send | ( | const void * | buf, | |
| size_t | n, | |||
| int | flags | |||
| ) |  [inline] | 
        
Send an n byte buffer to the other process using shm_malloc_ connected thru the socket.
ssize_t ACE_MEM_IO::buf_size_ [private] | 
        
Record the current total buffer size of <recv_buffer_>.
ssize_t ACE_MEM_IO::cur_offset_ [private] | 
        
Record the current read pointer location in <recv_buffer_>.
ACE_MEM_SAP* ACE_MEM_IO::deliver_strategy_ [private] | 
        
Actual deliverying mechanism.
ACE_MEM_SAP_Node* ACE_MEM_IO::recv_buffer_ [private] | 
        
Internal pointer for support recv/send.
 1.6.2