ACE  6.3.3
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
ACE_MEM_IO Class Reference

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>

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

Public Types

enum  Signal_Strategy { Reactive, MT }
 

Public Member Functions

 ACE_MEM_IO (void)
 Constructor. More...
 
 ~ACE_MEM_IO (void)
 Destructor. More...
 
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. More...
 
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. More...
 
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. More...
 
- Public Member Functions inherited from ACE_SOCK
int set_option (int level, int option, void *optval, int optlen) const
 Wrapper around the setsockopt system call. More...
 
int get_option (int level, int option, void *optval, int *optlen) const
 Wrapper around the getsockopt system call. More...
 
int close (void)
 
int get_local_addr (ACE_Addr &) const
 
int get_remote_addr (ACE_Addr &) const
 
void dump (void) const
 Dump the state of an object. More...
 
int open (int type, int protocol_family, int protocol, int reuse_addr)
 Wrapper around the BSD-style socket system call (no QoS). More...
 
int open (int type, int protocol_family, int protocol, ACE_Protocol_Info *protocolinfo, ACE_SOCK_GROUP g, u_long flags, int reuse_addr)
 Wrapper around the QoS-enabled WSASocket function. More...
 
- Public Member Functions inherited from ACE_IPC_SAP
int control (int cmd, void *) const
 Interface for <ioctl>. More...
 
int enable (int value) const
 
int disable (int value) const
 
ACE_HANDLE get_handle (void) const
 Get the underlying handle. More...
 
void set_handle (ACE_HANDLE handle)
 Set the underlying handle. More...
 
void dump (void) const
 Dump the state of an object. More...
 

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 
- Public Attributes inherited from ACE_SOCK
 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 
- Public Attributes inherited from ACE_IPC_SAP
 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Private Member Functions

ssize_t fetch_recv_buf (int flag, const ACE_Time_Value *timeout)
 

Private Attributes

ACE_MEM_SAPdeliver_strategy_
 Actual deliverying mechanism. More...
 
ACE_MEM_SAP_Noderecv_buffer_
 Internal pointer for support recv/send. More...
 
ssize_t buf_size_
 Record the current total buffer size of <recv_buffer_>. More...
 
ssize_t cur_offset_
 Record the current read pointer location in <recv_buffer_>. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ACE_SOCK
 ACE_SOCK (int type, int protocol_family, int protocol=0, int reuse_addr=0)
 
 ACE_SOCK (int type, int protocol_family, int protocol, ACE_Protocol_Info *protocolinfo, ACE_SOCK_GROUP g, u_long flags, int reuse_addr)
 
 ACE_SOCK (void)
 
 ~ACE_SOCK (void)
 Protected destructor. More...
 
- Protected Member Functions inherited from ACE_IPC_SAP
 ACE_IPC_SAP (void)
 Default constructor. More...
 
 ~ACE_IPC_SAP (void)
 Protected destructor. More...
 

Detailed Description

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.

Member Enumeration Documentation

Enumerator
Reactive 
MT 

Constructor & Destructor Documentation

ACE_MEM_IO::ACE_MEM_IO ( void  )
inline

Constructor.

ACE_MEM_IO::~ACE_MEM_IO ( void  )
inline

Destructor.

Member Function Documentation

void ACE_MEM_IO::dump ( void  ) const

Dump the state of an object.

ssize_t ACE_MEM_IO::fetch_recv_buf ( int  flag,
const ACE_Time_Value timeout 
)
inlineprivate

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

Recv an n byte buffer from the shm_malloc_ thru connected socket.

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,
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,
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::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::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,
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,
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 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.

Member Data Documentation

ACE_MEM_IO::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

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.


The documentation for this class was generated from the following files: