3 //=============================================================================
5 * @file DIOP_Endpoint.h
7 * DIOP implementation of PP Framework Endpoint interface.
9 * @author Michael Kircher
11 //=============================================================================
14 #ifndef TAO_DIOP_ENDPOINT_H
15 #define TAO_DIOP_ENDPOINT_H
16 #include /**/ "ace/pre.h"
18 #include "tao/orbconf.h"
20 #if !defined (ACE_LACKS_PRAGMA_ONCE)
22 #endif /* ACE_LACKS_PRAGMA_ONCE */
24 #if defined (TAO_HAS_DIOP) && (TAO_HAS_DIOP != 0)
26 #include "tao/Strategies/strategies_export.h"
27 #include "tao/Endpoint.h"
28 #include "tao/CORBA_String.h"
29 #include "ace/INET_Addr.h"
31 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
33 class TAO_DIOP_Connection_Handler
;
36 * @class TAO_DIOP_Endpoint
38 * @brief TAO_DIOP_Endpoint
40 * DIOP-specific implementation of PP Framework Endpoint interface.
42 class TAO_Strategies_Export TAO_DIOP_Endpoint
: public TAO_Endpoint
45 friend class TAO_DIOP_Profile
;
46 friend class TAO_SSLIOP_Profile
;
48 /// Default constructor.
51 /// Constructor. This is the most efficient constructor since it
52 /// does not require any address resolution processing.
53 TAO_DIOP_Endpoint (const char *host
,
55 const ACE_INET_Addr
&addr
,
56 CORBA::Short priority
= TAO_INVALID_PRIORITY
);
59 TAO_DIOP_Endpoint (const ACE_INET_Addr
&addr
,
60 int use_dotted_decimal_addresses
);
62 /// Constructor. This constructor is used when decoding endpoints.
63 TAO_DIOP_Endpoint (const char *host
,
65 CORBA::Short priority
);
68 ~TAO_DIOP_Endpoint () = default;
71 * @name TAO_Endpoint Methods
73 * Please check the documentation in Endpoint.h for details.
76 virtual TAO_Endpoint
*next ();
77 virtual int addr_to_string (char *buffer
, size_t length
);
78 virtual TAO_Endpoint
*duplicate ();
80 /// Return true if this endpoint is equivalent to @a other_endpoint. Two
81 /// endpoints are equivalent if their port and host are the same.
82 CORBA::Boolean
is_equivalent (const TAO_Endpoint
*other_endpoint
);
84 /// Return a hash value for this object.
88 // Allocates memory and returns a copy of <this>
90 // = DIOP_Endpoint-specific methods.
92 /// Return a reference to the <object_addr>.
93 const ACE_INET_Addr
&object_addr () const;
95 /// Return a pointer to the host string. This object maintains
96 /// ownership of this string.
97 const char *host () const;
99 /// Copy the string @a h into <host_> and return the resulting pointer.
100 /// This object maintains ownership of this string.
101 const char *host (const char *h
);
103 /// Return the port number.
104 CORBA::UShort
port () const;
106 /// Set the port number.
107 CORBA::UShort
port (CORBA::UShort p
);
110 /// Helper method for setting INET_Addr.
111 int set (const ACE_INET_Addr
&addr
,
112 int use_dotted_decimal_addresses
);
114 /// Helper method for object_addr () call.
115 void object_addr_i () const;
117 /// String representing the host name.
118 CORBA::String_var host_
;
123 #if defined (ACE_HAS_IPV6)
124 /// Does the host string represent an IPv6 decimal address.
125 bool is_ipv6_decimal_
;
126 #endif /* ACE_HAS_IPV6 */
128 /// Cached instance of <ACE_INET_Addr> for use in making
129 /// invocations, etc.
130 mutable ACE_INET_Addr object_addr_
;
132 /// Flag to indicate if the address has been resolved and set.
133 mutable bool object_addr_set_
;
135 /// DIOP Endpoints can be strung into a list. Return the next
136 /// endpoint in the list, if any.
137 TAO_DIOP_Endpoint
*next_
;
140 TAO_END_VERSIONED_NAMESPACE_DECL
142 #if defined (__ACE_INLINE__)
143 # include "tao/Strategies/DIOP_Endpoint.inl"
144 #endif /* __ACE_INLINE__ */
146 #endif /* TAO_HAS_DIOP && TAO_HAS_DIOP != 0 */
148 #include /**/ "ace/post.h"
149 #endif /* TAO_DIOP_PROFILE_H */