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 ACE_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.

Referenced by open_i().

typedef ACE_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.

Referenced by open_i().

typedef TAO_Creation_Strategy<TAO_UIOP_Connection_Handler> TAO_UIOP_Acceptor::TAO_UIOP_CREATION_STRATEGY
 

Definition at line 57 of file UIOP_Acceptor.h.

Referenced by open_i().


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.

References TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR, and TAO_TAG_UIOP_PROFILE.

00025   : TAO_Acceptor (TAO_TAG_UIOP_PROFILE),
00026     base_acceptor_ (),
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 close().

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 ACE_Strategy_Acceptor< SVC_HANDLER, >::acceptor(), ACE_Acceptor< SVC_HANDLER, ACE_PEER_ACCEPTOR_2 >::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_Strategy_Acceptor< SVC_HANDLER, >::acceptor(), 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, TAO_ORB_Core::orb_params(), TAO_Endpoint::priority(), TAO_MProfile::profile_count(), TAO_Codeset_Manager::set_codeset(), TAO_Tagged_Components::set_orb_type(), TAO_MProfile::size(), TAO_ORB_Parameters::std_profile_components(), TAO_Profile::tagged_components(), and TAO_ORB_TYPE.

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_Strategy_Acceptor< SVC_HANDLER, >::acceptor(), 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(), TAO_PHandle, 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 334 of file UIOP_Acceptor.cpp.

00335 {
00336   return 1;
00337 }

int TAO_UIOP_Acceptor::init_uiop_properties void   )  [private]
 

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

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

Implements TAO_Acceptor.

Definition at line 158 of file UIOP_Acceptor.cpp.

References ACE_Strategy_Acceptor< SVC_HANDLER, >::acceptor(), and 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 340 of file UIOP_Acceptor.cpp.

References ACE_DEBUG, ACE_ERROR, ACE_TEXT, LM_DEBUG, LM_ERROR, IOP::TaggedProfile::profile_data, ACE_InputCDR::read_octet(), ACE_InputCDR::read_string(), and TAO_debug_level.

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

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(), parse_options(), and TAO_GIOP_Message_Version::set_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(), parse_options(), and TAO_GIOP_Message_Version::set_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_Strategy_Acceptor< SVC_HANDLER, >::acceptor(), ACE_CLOEXEC, ACE_DEBUG, ACE_NEW_RETURN, EADDRINUSE, ACE_UNIX_Addr::get_path_name(), LM_DEBUG, ACE_Strategy_Acceptor< SVC_HANDLER, >::open(), rendezvous_point(), TAO_debug_level, TAO_UIOP_ACCEPT_STRATEGY, TAO_UIOP_CONCURRENCY_STRATEGY, TAO_UIOP_CREATION_STRATEGY, 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   return 0;
00289 }

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

Parse protocol specific options.

Definition at line 389 of file UIOP_Acceptor.cpp.

References ACE_CString, ACE_ERROR_RETURN, ACE_TEXT, and LM_ERROR.

Referenced by open(), and open_default().

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

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 292 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().

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


Member Data Documentation

TAO_UIOP_ACCEPT_STRATEGY* TAO_UIOP_Acceptor::accept_strategy_ [private]
 

Definition at line 123 of file UIOP_Acceptor.h.

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.

TAO_UIOP_CONCURRENCY_STRATEGY* TAO_UIOP_Acceptor::concurrency_strategy_ [private]
 

Definition at line 122 of file UIOP_Acceptor.h.

TAO_UIOP_CREATION_STRATEGY* TAO_UIOP_Acceptor::creation_strategy_ [private]
 

Definition at line 121 of file UIOP_Acceptor.h.

TAO_ORB_Core* TAO_UIOP_Acceptor::orb_core_ [private]
 

ORB Core.

Definition at line 129 of file UIOP_Acceptor.h.

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.


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 16:03:33 2008 for TAO_Strategies by doxygen 1.3.6