summaryrefslogtreecommitdiff
path: root/ace/MEM_IO.h
blob: 71d4e39f71ad3faaf0dbdfa9b52f2553a1939a29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* -*- C++ -*- */
// $Id$

// ============================================================================
//
// = LIBRARY
//    ace
//
// = FILENAME
//    MEM_IO.h
//
// = AUTHOR
//    Nanbor Wang
//
// ============================================================================

#ifndef ACE_MEM_IO_H
#define ACE_MEM_IO_H

#include "ace/SOCK.h"
#include "ace/MEM_SAP.h"
#include "ace/Memory_Pool.h"
#include "ace/Message_Block.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

class ACE_Export ACE_MEM_IO : public ACE_SOCK, public ACE_MEM_SAP
{
  // = TITLE
  //     Defines the methods for the ACE shared memeory wrapper I/O routines
  //     (e.g., send/recv).
public:
  // = Initialization and termination methods.
  ACE_MEM_IO ();
  // Constructor.

  ~ACE_MEM_IO (void);
  // Destructor.

  ssize_t send (const void *buf,
                size_t n,
                int flags) ;
  // Send an <n> byte buffer to the other process using shm_malloc_
  // connected thru the socket.

  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) ;
  // Send an <n> byte buffer to the other process using shm_malloc_
  // connected thru the socket.

  ssize_t recv (void *buf,
                size_t n) ;
  // Recv an <n> byte buffer from the shm_malloc_ thru connected socket.

  ssize_t fetch_recv_buf (int flags, const ACE_Time_Value *timeout = 0);
  // @@ Please fill in here.

  ssize_t send (const void *buf,
                size_t n,
                int flags,
                const ACE_Time_Value *timeout);
  // 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 recv (void *buf,
                size_t n,
                int flags,
                const ACE_Time_Value *timeout);
  // 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 send (const void *buf,
                size_t n,
                const ACE_Time_Value *timeout);
  // 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 recv (void *buf,
                size_t n,
                const ACE_Time_Value *timeout);
  // 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 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.

  void dump (void) const;
  // Dump the state of an object.

  ACE_ALLOC_HOOK_DECLARE;
  // Declare the dynamic allocation hooks.

  /*  int get_local_port (u_short &) const;
  // Return the local endpoint port number.  Returns 0 if successful,
  // else -1.

  int get_remote_port (u_short &) const;
  // Return the port number of the remotely connected peer (if there
  // is one). Returns 0 if successful, else -1.
  */
private:
  void *recv_buffer_;
  // Internal pointer for support recv/send.

  ssize_t buf_size_;
  // total buffer size.

  ssize_t cur_offset_;
  // current read pointer location.
};

#if !defined (ACE_LACKS_INLINE_FUNCTIONS)
#include "ace/MEM_IO.i"
#endif

#endif /* ACE_SOCK_IO_H */