summaryrefslogtreecommitdiff
path: root/ace/MEM_Addr.h
blob: 6e3a28e09501cfee0d16e20b293d4163782b1dfd (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
135
136
137
138
139
140
141
142
143
144
145
/* -*- C++ -*- */
// $Id$

// ============================================================================
//
// = LIBRARY
//    ace
//
// = FILENAME
//    MEM_Addr.h
//
// = AUTHOR
//    Nanbor Wang <nanbor@cs.wustl.edu>
//
// ============================================================================

#ifndef ACE_MEM_ADDR_H
#define ACE_MEM_ADDR_H
#include "ace/pre.h"

#include "ace/ACE.h"

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

#include "ace/INET_Addr.h"

class ACE_Export ACE_MEM_Addr : public ACE_Addr
{
  // = TITLE
  //    Defines a C++ wrapper facade for the shared memory transport
  //    address family format.
public:
  // = Initialization methods.
  ACE_MEM_Addr (void);
  // Default constructor.

  ACE_MEM_Addr (const ACE_MEM_Addr &);
  // Copy constructor.

  ACE_MEM_Addr (u_short port_number);
  // Creates an <ACE_INET_Addr> from a <port_number> and the remote
  // <host_name>.

  ACE_EXPLICIT ACE_MEM_Addr (const ACE_TCHAR port_name[]);
  // Creates an <ACE_INET_Addr> from a <port_name>.

  ~ACE_MEM_Addr (void);
  // Default dtor.

  // = Direct initialization methods.

  int initialize_local (u_short port);
  // default initialization routine.

  int same_host (const ACE_INET_Addr& sap);
  // Check if <sap> designate an enpoint withing the same host.

  // These methods are useful after the object has been constructed.

  int set (u_short port_number,
           int encode = 1);
  // Initializes an <ACE_INET_Addr> from a <port_number> and the
  // remote <host_name>.  If <encode> is enabled then <port_number> is
  // converted into network byte order, otherwise it is assumed to be
  // in network byte order already and are passed straight through.

  int set (const ACE_TCHAR port_name[]);
  // Uses <getservbyname> to initialize an <ACE_INET_Addr> from a
  // <port_name>, the remote <host_name>, and the <protocol>.

  virtual void *get_addr (void) const;
  // Return a pointer to the underlying network address.

  virtual void set_addr (void *, int len);
  // Set a pointer to the address.

  virtual int addr_to_string (ACE_TCHAR buffer[],
                              size_t size,
                              int ipaddr_format = 1) const;
  // Transform the external <ACE_INET_Addr> address into string
  // format.

  virtual int string_to_addr (const ACE_TCHAR address[]);
  // Initializes the external <ACE_INET_Addr> from the <address>.

  void set_port_number (u_short,
                        int encode = 1);
  // Sets the port number.

  u_short get_port_number (void) const;
  // Return the port number, converting it into host byte order.

  int get_host_name (ACE_TCHAR hostname[],
                     size_t hostnamelen) const;
  // Return the character representation of the hostname.

  const ACE_TCHAR *get_host_name (void) const;
  // Return the character representation of the hostname (this version
  // is non-reentrant since it returns a pointer to a static data
  // area).

  const ACE_TCHAR *get_host_addr (void) const;
  // Return the "dotted decimal" external address.

  ACE_UINT32 get_ip_address (void) const;
  // Return the 4-byte external IP address, converting it into host byte
  // order.

  const ACE_INET_Addr &get_remote_addr (void) const;
  const ACE_INET_Addr &get_local_addr (void) const;

  int operator == (const ACE_MEM_Addr &SAP) const;
  int operator == (const ACE_INET_Addr &SAP) const;
  // Compare two addresses for equality.  The addresses are considered
  // equal if they contain the same IP address and port number.

  int operator != (const ACE_MEM_Addr &SAP) const;
  int operator != (const ACE_INET_Addr &SAP) const;
  // Compare two addresses for inequality.

  virtual u_long hash (void) const;
  // Computes and returns hash value.

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

  ACE_ALLOC_HOOK_DECLARE;
  // Declare the dynamic allocation hooks.

private:
  ACE_INET_Addr external_;
  // External INET addr used for identifying host.

  ACE_INET_Addr internal_;
  // Internal INET addr for accepting/connecting.
};

#if defined (__ACE_INLINE__)
#include "ace/MEM_Addr.i"
#endif /* __ACE_INLINE__ */

#include "ace/post.h"
#endif /* ACE_MEM_ADDR_H */