TAO_UIOP_Acceptor Class Reference

The UIOP-specific bridge class for the concrete acceptor. More...

#include <UIOP_Acceptor.h>

Inheritance diagram for TAO_UIOP_Acceptor:

Inheritance graph
[legend]
Collaboration diagram for TAO_UIOP_Acceptor:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TAO_Strategy_Acceptor<
TAO_UIOP_Connection_Handler,
ACE_LSOCK_ACCEPTOR
TAO_UIOP_BASE_ACCEPTOR
typedef TAO_Creation_Strategy<
TAO_UIOP_Connection_Handler
TAO_UIOP_CREATION_STRATEGY
typedef TAO_Concurrency_Strategy<
TAO_UIOP_Connection_Handler
TAO_UIOP_CONCURRENCY_STRATEGY
typedef TAO_Accept_Strategy<
TAO_UIOP_Connection_Handler,
ACE_LSOCK_ACCEPTOR
TAO_UIOP_ACCEPT_STRATEGY

Public Member Functions

 TAO_UIOP_Acceptor (void)
 Create Acceptor object using addr.
virtual ~TAO_UIOP_Acceptor (void)
 Destructor.
The TAO_Acceptor Methods
Please check the documentation in Transport_Acceptor.h for details.

virtual int open (TAO_ORB_Core *orb_core, ACE_Reactor *reactor, int version_major, int version_minor, const char *address, const char *options=0)
virtual int open_default (TAO_ORB_Core *orb_core, ACE_Reactor *reactor, int version_major, int version_minor, const char *options=0)
virtual int close (void)
virtual int create_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority)
virtual int is_collocated (const TAO_Endpoint *endpoint)
virtual CORBA::ULong endpoint_count (void)
virtual int object_key (IOP::TaggedProfile &profile, TAO::ObjectKey &key)

Private Member Functions

int open_i (const char *rendezvous, ACE_Reactor *reactor)
 Implement the common part of the open*() methods.
void rendezvous_point (ACE_UNIX_Addr &, const char *rendezvous)
int parse_options (const char *options)
 Parse protocol specific options.
int init_uiop_properties (void)
int create_new_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority)
 Create a UIOP profile representing this acceptor.
int create_shared_profile (const TAO::ObjectKey &object_key, TAO_MProfile &mprofile, CORBA::Short priority)
 Add the endpoints on this acceptor to a shared profile.

Private Attributes

TAO_UIOP_BASE_ACCEPTOR base_acceptor_
 The concrete acceptor, as a pointer to its base class.
TAO_UIOP_CREATION_STRATEGYcreation_strategy_
TAO_UIOP_CONCURRENCY_STRATEGYconcurrency_strategy_
TAO_UIOP_ACCEPT_STRATEGYaccept_strategy_
TAO_GIOP_Message_Version version_
 The GIOP version for this endpoint.
TAO_ORB_Coreorb_core_
 ORB Core.
bool unlink_on_close_

Detailed Description

The UIOP-specific bridge class for the concrete acceptor.

Definition at line 44 of file UIOP_Acceptor.h.


Member Typedef Documentation

typedef TAO_Accept_Strategy<TAO_UIOP_Connection_Handler, ACE_LSOCK_ACCEPTOR> TAO_UIOP_Acceptor::TAO_UIOP_ACCEPT_STRATEGY

Definition at line 59 of file UIOP_Acceptor.h.

typedef TAO_Strategy_Acceptor<TAO_UIOP_Connection_Handler, ACE_LSOCK_ACCEPTOR> TAO_UIOP_Acceptor::TAO_UIOP_BASE_ACCEPTOR

Definition at line 56 of file UIOP_Acceptor.h.

typedef TAO_Concurrency_Strategy<TAO_UIOP_Connection_Handler> TAO_UIOP_Acceptor::TAO_UIOP_CONCURRENCY_STRATEGY

Definition at line 58 of file UIOP_Acceptor.h.

typedef TAO_Creation_Strategy<TAO_UIOP_Connection_Handler> TAO_UIOP_Acceptor::TAO_UIOP_CREATION_STRATEGY

Definition at line 57 of file UIOP_Acceptor.h.


Constructor & Destructor Documentation

TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_UIOP_Acceptor::TAO_UIOP_Acceptor ( void   ) 

Create Acceptor object using addr.

Definition at line 24 of file UIOP_Acceptor.cpp.

00025   : TAO_Acceptor (TAO_TAG_UIOP_PROFILE),
00026     base_acceptor_ (this),
00027     creation_strategy_ (0),
00028     concurrency_strategy_ (0),
00029     accept_strategy_ (0),
00030     version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
00031     orb_core_ (0),
00032     unlink_on_close_ (true)
00033 {
00034 }

TAO_UIOP_Acceptor::~TAO_UIOP_Acceptor ( void   )  [virtual]

Destructor.

Definition at line 36 of file UIOP_Acceptor.cpp.

References accept_strategy_, close(), concurrency_strategy_, and creation_strategy_.

00037 {
00038   // Make sure we are closed before we start destroying the
00039   // strategies.
00040   this->close ();
00041 
00042   delete this->creation_strategy_;
00043   delete this->concurrency_strategy_;
00044   delete this->accept_strategy_;
00045 }


Member Function Documentation

int TAO_UIOP_Acceptor::close ( void   )  [virtual]

Implements TAO_Acceptor.

Definition at line 176 of file UIOP_Acceptor.cpp.

References base_acceptor_, ACE_Acceptor< SVC_HANDLER, >::close(), ACE_UNIX_Addr::get_path_name(), ACE_OS::unlink(), and unlink_on_close_.

Referenced by ~TAO_UIOP_Acceptor().

00177 {
00178   if (this->unlink_on_close_)
00179     {
00180       ACE_UNIX_Addr addr;
00181 
00182       if (this->base_acceptor_.acceptor ().get_local_addr (addr) == 0)
00183         (void) ACE_OS::unlink (addr.get_path_name ());
00184 
00185       this->unlink_on_close_ = false;
00186     }
00187 
00188   return this->base_acceptor_.close ();
00189 }

int TAO_UIOP_Acceptor::create_new_profile ( const TAO::ObjectKey &  object_key,
TAO_MProfile mprofile,
CORBA::Short  priority 
) [private]

Create a UIOP profile representing this acceptor.

Definition at line 66 of file UIOP_Acceptor.cpp.

References TAO_Profile::_decr_refcnt(), ACE_NEW_RETURN, TAO_ORB_Core::codeset_manager(), TAO_UIOP_Profile::endpoint(), TAO_MProfile::give_profile(), TAO_MProfile::grow(), TAO_GIOP_Message_Version::major, TAO_GIOP_Message_Version::minor, orb_core_, TAO_Endpoint::priority(), TAO_MProfile::profile_count(), TAO_Codeset_Manager::set_codeset(), TAO_Tagged_Components::set_orb_type(), TAO_MProfile::size(), TAO_Profile::tagged_components(), TAO_ORB_TYPE, and version_.

Referenced by create_profile(), and create_shared_profile().

00069 {
00070   ACE_UNIX_Addr addr;
00071 
00072   if (this->base_acceptor_.acceptor ().get_local_addr (addr) == -1)
00073     return 0;
00074 
00075   int count = mprofile.profile_count ();
00076   if ((mprofile.size () - count) < 1
00077       && mprofile.grow (count + 1) == -1)
00078     return -1;
00079 
00080   TAO_UIOP_Profile *pfile = 0;
00081   ACE_NEW_RETURN (pfile,
00082                   TAO_UIOP_Profile (addr,
00083                                     object_key,
00084                                     this->version_,
00085                                     this->orb_core_),
00086                   -1);
00087   pfile->endpoint ()->priority (priority);
00088 
00089   if (mprofile.give_profile (pfile) == -1)
00090     {
00091       pfile->_decr_refcnt ();
00092       pfile = 0;
00093       return -1;
00094     }
00095 
00096   // Do not add any tagged components to the profile if configured
00097   // by the user not to do so, or if an UIOP 1.0 endpoint is being
00098   // created (IIOP 1.0 did not support tagged components, so we follow
00099   // the same convention for UIOP).
00100   if (this->orb_core_->orb_params ()->std_profile_components () == 0
00101       || (this->version_.major == 1 && this->version_.minor == 0))
00102     return 0;
00103 
00104   pfile->tagged_components ().set_orb_type (TAO_ORB_TYPE);
00105   TAO_Codeset_Manager *csm = this->orb_core_->codeset_manager();
00106   if (csm)
00107     csm->set_codeset(pfile->tagged_components());
00108   return 0;
00109 }

int TAO_UIOP_Acceptor::create_profile ( const TAO::ObjectKey &  object_key,
TAO_MProfile mprofile,
CORBA::Short  priority 
) [virtual]

Implements TAO_Acceptor.

Definition at line 48 of file UIOP_Acceptor.cpp.

References create_new_profile(), create_shared_profile(), and TAO_INVALID_PRIORITY.

00051 {
00052   // Check if multiple endpoints should be put in one profile or
00053   // if they should be spread across multiple profiles.
00054   if (priority == TAO_INVALID_PRIORITY)
00055     return this->create_new_profile (object_key,
00056                                      mprofile,
00057                                      priority);
00058   else
00059     return this->create_shared_profile (object_key,
00060                                         mprofile,
00061                                         priority);
00062 
00063 }

int TAO_UIOP_Acceptor::create_shared_profile ( const TAO::ObjectKey &  object_key,
TAO_MProfile mprofile,
CORBA::Short  priority 
) [private]

Add the endpoints on this acceptor to a shared profile.

Definition at line 112 of file UIOP_Acceptor.cpp.

References ACE_NEW_RETURN, TAO_UIOP_Profile::add_endpoint(), create_new_profile(), TAO_MProfile::get_profile(), TAO_Endpoint::priority(), TAO_MProfile::profile_count(), TAO_Profile::tag(), and TAO_TAG_UIOP_PROFILE.

Referenced by create_profile().

00115 {
00116   TAO_Profile *pfile = 0;
00117   TAO_UIOP_Profile *uiop_profile = 0;
00118 
00119   // First see if <mprofile> already contains a UIOP profile.
00120   for (TAO_PHandle i = 0; i != mprofile.profile_count (); ++i)
00121     {
00122       pfile = mprofile.get_profile (i);
00123       if (pfile->tag () == TAO_TAG_UIOP_PROFILE)
00124       {
00125         uiop_profile = dynamic_cast<TAO_UIOP_Profile *> (pfile);
00126         break;
00127       }
00128     }
00129 
00130   if (uiop_profile == 0)
00131     {
00132       // If <mprofile> doesn't contain UIOP_Profile, we need to create
00133       // one.
00134       return create_new_profile (object_key,
00135                                  mprofile,
00136                                  priority);
00137     }
00138   else
00139     {
00140       // A UIOP_Profile already exists - just add our endpoint to it.
00141       ACE_UNIX_Addr addr;
00142 
00143       if (this->base_acceptor_.acceptor ().get_local_addr (addr) == -1)
00144         return 0;
00145 
00146       TAO_UIOP_Endpoint *endpoint = 0;
00147       ACE_NEW_RETURN (endpoint,
00148                       TAO_UIOP_Endpoint (addr),
00149                       -1);
00150       endpoint->priority (priority);
00151       uiop_profile->add_endpoint (endpoint);
00152 
00153       return 0;
00154     }
00155 }

CORBA::ULong TAO_UIOP_Acceptor::endpoint_count ( void   )  [virtual]

Implements TAO_Acceptor.

Definition at line 342 of file UIOP_Acceptor.cpp.

00343 {
00344   return 1;
00345 }

int TAO_UIOP_Acceptor::init_uiop_properties ( void   )  [private]

Obtains uiop properties that must be used by this acceptor, i.e., initializes <uiop_properties_>.

int TAO_UIOP_Acceptor::is_collocated ( const TAO_Endpoint endpoint  )  [virtual]

Implements TAO_Acceptor.

Definition at line 158 of file UIOP_Acceptor.cpp.

References TAO_UIOP_Endpoint::object_addr().

00159 {
00160   const TAO_UIOP_Endpoint *endp =
00161     dynamic_cast<const TAO_UIOP_Endpoint *> (endpoint);
00162 
00163   // Make sure the dynamically cast pointer is valid.
00164   if (endp == 0)
00165     return 0;
00166 
00167   // For UNIX Files this is relatively cheap.
00168   ACE_UNIX_Addr address;
00169   if (this->base_acceptor_.acceptor ().get_local_addr (address) == -1)
00170     return 0;
00171 
00172   return endp->object_addr () == address;
00173 }

int TAO_UIOP_Acceptor::object_key ( IOP::TaggedProfile &  profile,
TAO::ObjectKey &  key 
) [virtual]

Implements TAO_Acceptor.

Definition at line 348 of file UIOP_Acceptor.cpp.

References ACE_DEBUG, ACE_ERROR, ACE_TEXT, LM_DEBUG, LM_ERROR, and TAO_debug_level.

00350 {
00351   // Create the decoding stream from the encapsulation in the buffer,
00352 #if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
00353   TAO_InputCDR cdr (profile.profile_data.mb ());
00354 #else
00355   TAO_InputCDR cdr (reinterpret_cast<char*> (profile.profile_data.get_buffer ()),
00356                     profile.profile_data.length ());
00357 #endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */
00358 
00359   CORBA::Octet major, minor;
00360 
00361   // Read the version. We just read it here. We don't *do any*
00362   // processing.
00363   if (!(cdr.read_octet (major) && cdr.read_octet (minor)))
00364     {
00365       if (TAO_debug_level > 0)
00366         {
00367           ACE_DEBUG ((LM_DEBUG,
00368                       ACE_TEXT ("TAO (%P|%t) IIOP_Profile::decode - v%d.%d\n"),
00369                       major,
00370                       minor));
00371         }
00372 
00373       return -1;
00374     }
00375 
00376   char * rendezvous = 0;
00377 
00378   // Get rendezvous_point
00379   if (cdr.read_string (rendezvous) == 0)
00380     {
00381       ACE_ERROR ((LM_ERROR, "error decoding UIOP rendezvous_point"));
00382 
00383       return -1;
00384     }
00385 
00386   // delete the rendezvous point. We don't do any processing.
00387   delete [] rendezvous;
00388 
00389   // ... and object key.
00390   if ((cdr >> object_key) == 0)
00391     return -1;
00392 
00393   return 1;
00394 }

int TAO_UIOP_Acceptor::open ( TAO_ORB_Core orb_core,
ACE_Reactor reactor,
int  version_major,
int  version_minor,
const char *  address,
const char *  options = 0 
) [virtual]

Implements TAO_Acceptor.

Definition at line 192 of file UIOP_Acceptor.cpp.

References open_i(), orb_core_, TAO_GIOP_Message_Version::set_version(), and version_.

00198 {
00199   this->orb_core_ = orb_core;
00200 
00201   if (address == 0)
00202     return -1;
00203 
00204   if (major >= 0 && minor >= 0)
00205     this->version_.set_version (static_cast<CORBA::Octet> (major),
00206                                 static_cast<CORBA::Octet> (minor));
00207   // Parse options
00208   if (this->parse_options (options) == -1)
00209     return -1;
00210   else
00211     return this->open_i (address,
00212                          reactor);
00213 }

int TAO_UIOP_Acceptor::open_default ( TAO_ORB_Core orb_core,
ACE_Reactor reactor,
int  version_major,
int  version_minor,
const char *  options = 0 
) [virtual]

Implements TAO_Acceptor.

Definition at line 216 of file UIOP_Acceptor.cpp.

References ACE_Auto_String_Free::get(), open_i(), orb_core_, TAO_GIOP_Message_Version::set_version(), ACE_OS::tempnam(), and version_.

00221 {
00222   this->orb_core_ = orb_core;
00223 
00224   if (major >= 0 && minor >= 0)
00225     this->version_.set_version (static_cast<CORBA::Octet> (major),
00226                                 static_cast<CORBA::Octet> (minor));
00227 
00228   // Parse options
00229   if (this->parse_options (options) == -1)
00230     return -1;
00231 
00232   ACE_Auto_String_Free tempname (ACE_OS::tempnam (0, "TAO"));
00233 
00234   if (tempname.get () == 0)
00235     return -1;
00236 
00237   return this->open_i (tempname.get (),
00238                        reactor);
00239 }

int TAO_UIOP_Acceptor::open_i ( const char *  rendezvous,
ACE_Reactor reactor 
) [private]

Implement the common part of the open*() methods.

Definition at line 242 of file UIOP_Acceptor.cpp.

References ACE_CLOEXEC, ACE_DEBUG, ACE_NEW_RETURN, ACE_UNIX_Addr::get_path_name(), LM_DEBUG, rendezvous_point(), TAO_Acceptor::set_error_retry_delay(), TAO_debug_level, and unlink_on_close_.

Referenced by open(), and open_default().

00244 {
00245   ACE_NEW_RETURN (this->creation_strategy_,
00246                   TAO_UIOP_CREATION_STRATEGY (this->orb_core_),
00247                   -1);
00248 
00249   ACE_NEW_RETURN (this->concurrency_strategy_,
00250                   TAO_UIOP_CONCURRENCY_STRATEGY (this->orb_core_),
00251                   -1);
00252 
00253   ACE_NEW_RETURN (this->accept_strategy_,
00254                   TAO_UIOP_ACCEPT_STRATEGY (this->orb_core_),
00255                   -1);
00256 
00257   ACE_UNIX_Addr addr;
00258 
00259   this->rendezvous_point (addr, rendezvous);
00260 
00261   if (this->base_acceptor_.open (addr,
00262                                  reactor,
00263                                  this->creation_strategy_,
00264                                  this->accept_strategy_,
00265                                  this->concurrency_strategy_) == -1)
00266     {
00267       // Don't unlink an existing rendezvous point since it may be in
00268       // use by another UIOP server/client.
00269       if (errno == EADDRINUSE)
00270         this->unlink_on_close_ = false;
00271 
00272       return -1;
00273     }
00274 
00275   (void) this->base_acceptor_.acceptor().enable (ACE_CLOEXEC);
00276   // This avoids having child processes acquire the listen socket thereby
00277   // denying the server the opportunity to restart on a well-known endpoint.
00278   // This does not affect the aberrent behavior on Win32 platforms.
00279 
00280   // @@ If Profile creation is slow we may need to cache the
00281   //    rendezvous point here
00282 
00283   if (TAO_debug_level > 5)
00284     ACE_DEBUG ((LM_DEBUG,
00285                 "\nTAO (%P|%t) UIOP_Acceptor::open_i - "
00286                 "listening on: <%s>\n",
00287                 addr.get_path_name ()));
00288 
00289   // In the event that an accept() fails, we can examine the reason.  If
00290   // the reason warrants it, we can try accepting again at a later time.
00291   // The amount of time we wait to accept again is governed by this orb
00292   // parameter.
00293   this->set_error_retry_delay (
00294     this->orb_core_->orb_params ()->accept_error_delay());
00295 
00296   return 0;
00297 }

int TAO_UIOP_Acceptor::parse_options ( const char *  options  )  [private]

Parse protocol specific options.

Definition at line 397 of file UIOP_Acceptor.cpp.

References ACE_ERROR_RETURN, ACE_TEXT, ACE_String_Base< CHAR >::c_str(), ACE_String_Base< CHAR >::find(), ACE_String_Base< CHAR >::length(), LM_ERROR, ACE_String_Base_Const::npos, and ACE_String_Base< CHAR >::substring().

00398 {
00399   if (str == 0)
00400     return 0;  // No options to parse.  Not a problem.
00401 
00402   // Use an option format similar to the one used for CGI scripts in
00403   // HTTP URLs.
00404   // e.g.:  option1=foo&option2=bar
00405 
00406   ACE_CString options (str);
00407 
00408   const size_t len = options.length ();
00409 
00410   static const char option_delimiter = '&';
00411 
00412   // Count the number of options.
00413 
00414   CORBA::ULong option_count = 1;
00415   // Number of endpoints in the string (initialized to 1).
00416 
00417   // Only check for endpoints after the protocol specification and
00418   // before the object key.
00419   for (size_t i = 0; i < len; ++i)
00420     if (options[i] == option_delimiter)
00421       ++option_count;
00422 
00423   // The idea behind the following loop is to split the options into
00424   // (option, name) pairs.
00425   // For example,
00426   //    `option1=foo&option2=bar'
00427   // will be parsed into:
00428   //    `option1=foo'
00429   //    `option2=bar'
00430 
00431   ACE_CString::size_type begin = 0;
00432   ACE_CString::size_type end = 0;
00433 
00434   for (CORBA::ULong j = 0; j < option_count; ++j)
00435     {
00436       if (j < option_count - 1)
00437         end = options.find (option_delimiter, begin);
00438       else
00439         end = len;
00440 
00441       if (end == begin)
00442         ACE_ERROR_RETURN ((LM_ERROR,
00443                            "TAO (%P|%t) Zero length UIOP option.\n"),
00444                           -1);
00445       else if (end != ACE_CString::npos)
00446         {
00447           ACE_CString opt =
00448             options.substring (begin, end - begin);
00449 
00450           ACE_CString::size_type const slot = opt.find ("=");
00451 
00452           if (slot == len - 1
00453               || slot == ACE_CString::npos)
00454             ACE_ERROR_RETURN ((LM_ERROR,
00455                                "TAO (%P|%t) UIOP option <%s> is "
00456                                "missing a value.\n",
00457                                opt.c_str ()),
00458                               -1);
00459 
00460           const ACE_CString name (opt.substring (0, slot));
00461           ACE_CString value = opt.substring (slot + 1);
00462 
00463           begin = end + 1;
00464 
00465           if (name.length () == 0)
00466             ACE_ERROR_RETURN ((LM_ERROR,
00467                                "TAO (%P|%t) Zero length UIOP "
00468                                "option name.\n"),
00469                               -1);
00470 
00471           if (name == "priority")
00472             {
00473               ACE_ERROR_RETURN ((LM_ERROR,
00474                                  ACE_TEXT ("TAO (%P|%t) Invalid UIOP endpoint format: ")
00475                                  ACE_TEXT ("endpoint priorities no longer supported. \n")),
00476                                 -1);
00477             }
00478           else
00479             ACE_ERROR_RETURN ((LM_ERROR,
00480                                "TAO (%P|%t) Invalid UIOP option: <%s>\n",
00481                                name.c_str ()),
00482                               -1);
00483         }
00484       else
00485         break;  // No other options.
00486     }
00487   return 0;
00488 }

void TAO_UIOP_Acceptor::rendezvous_point ( ACE_UNIX_Addr ,
const char *  rendezvous 
) [private]

Set the rendezvous point and verify that it is valid (e.g. wasn't truncated because it was too long).

Definition at line 300 of file UIOP_Acceptor.cpp.

References ACE_DEBUG, ACE_UNIX_Addr::get_path_name(), LM_WARNING, ACE_UNIX_Addr::set(), and ACE_OS::strlen().

Referenced by open_i().

00302 {
00303   // To guarantee portability, local IPC rendezvous points (including
00304   // the path and filename) should not be longer than 99 characters
00305   // long. Some platforms may support longer rendezvous points,
00306   // usually 108 characters including the null terminator, but
00307   // Posix.1g only requires that local IPC rendezvous point arrays
00308   // contain a maximum of at least 100 characters, including the null
00309   // terminator.  If an endpoint is longer than what the platform
00310   // supports then it will be truncated so that it fits, and a warning
00311   // will be issued.
00312 
00313   // Avoid using relative paths in your UIOP endpoints.  If possible,
00314   // use absolute paths instead.  Imagine that the server is given an
00315   // endpoint to create using -ORBEndpoint uiop://foobar.  A local IPC
00316   // rendezvous point called foobar will be created in the current
00317   // working directory.  If the client is not started in the directory
00318   // where the foobar rendezvous point exists then the client will not
00319   // be able to communicate with the server since its point of
00320   // communication, the rendezvous point, was not found. On the other
00321   // hand, if an absolute path was used, the client would know exactly
00322   // where to find the rendezvous point.  It is up to the user to make
00323   // sure that a given UIOP endpoint is accessible by both the server
00324   // and the client.
00325 
00326   addr.set (rendezvous);
00327 
00328   const size_t length = ACE_OS::strlen (addr.get_path_name ());
00329 
00330   // Check if rendezvous point was truncated by ACE_UNIX_Addr since
00331   // most UNIX domain socket rendezvous points can only be less than
00332   // 108 characters long.
00333   if (length < ACE_OS::strlen (rendezvous))
00334     ACE_DEBUG ((LM_WARNING,
00335                 "TAO (%P|%t) UIOP rendezvous point was truncated to <%s>\n"
00336                 "since it was longer than %d characters long.\n",
00337                 addr.get_path_name (),
00338                 length));
00339 }


Member Data Documentation

TAO_UIOP_ACCEPT_STRATEGY* TAO_UIOP_Acceptor::accept_strategy_ [private]

Definition at line 123 of file UIOP_Acceptor.h.

Referenced by ~TAO_UIOP_Acceptor().

TAO_UIOP_BASE_ACCEPTOR TAO_UIOP_Acceptor::base_acceptor_ [private]

The concrete acceptor, as a pointer to its base class.

Definition at line 118 of file UIOP_Acceptor.h.

Referenced by close().

TAO_UIOP_CONCURRENCY_STRATEGY* TAO_UIOP_Acceptor::concurrency_strategy_ [private]

Definition at line 122 of file UIOP_Acceptor.h.

Referenced by ~TAO_UIOP_Acceptor().

TAO_UIOP_CREATION_STRATEGY* TAO_UIOP_Acceptor::creation_strategy_ [private]

Definition at line 121 of file UIOP_Acceptor.h.

Referenced by ~TAO_UIOP_Acceptor().

TAO_ORB_Core* TAO_UIOP_Acceptor::orb_core_ [private]

ORB Core.

Definition at line 129 of file UIOP_Acceptor.h.

Referenced by create_new_profile(), open(), and open_default().

bool TAO_UIOP_Acceptor::unlink_on_close_ [private]

Flag that determines whether or not the rendezvous point should be unlinked on close. This is really only used when an error occurs.

Definition at line 134 of file UIOP_Acceptor.h.

Referenced by close(), and open_i().

TAO_GIOP_Message_Version TAO_UIOP_Acceptor::version_ [private]

The GIOP version for this endpoint.

Definition at line 126 of file UIOP_Acceptor.h.

Referenced by create_new_profile(), open(), and open_default().


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:47:35 2010 for TAO_Strategies by  doxygen 1.4.7