InfoRepo Class Reference

#include <DCPSInfoRepoServ.h>

Inheritance diagram for InfoRepo:
Inheritance graph
[legend]
Collaboration diagram for InfoRepo:
Collaboration graph
[legend]

List of all members.

Classes

struct  InitError

Public Member Functions

 InfoRepo (int argc, ACE_TCHAR *argv[])
 ~InfoRepo ()
void run ()
virtual void shutdown ()
 ShutdownInterface used to schedule a shutdown.
void sync_shutdown ()
virtual int handle_exception (ACE_HANDLE fd=ACE_INVALID_HANDLE)
 Handler for the reactor to dispatch finalization activity to.

Private Member Functions

void init ()
void usage (const ACE_TCHAR *cmd)
void parse_args (int argc, ACE_TCHAR *argv[])
void finalize ()
 Actual finalization of service resources.

Private Attributes

CORBA::ORB_var orb_
ACE_TString ior_file_
std::string listen_address_str_
int listen_address_given_
bool use_bits_
bool resurrect_
ACE_Time_Value reassociate_delay_
bool finalized_
 Flag to indicate that finalization has already occurred.
bool servant_finalized_
OpenDDS::Federator::ManagerImpl federator_
 Repository Federation behaviors.
OpenDDS::Federator::Config federatorConfig_
PortableServer::Servant_var
< TAO_DDS_DCPSInfo_i
info_servant_
ACE_Thread_Mutex lock_
ACE_Condition_Thread_Mutex cond_
bool shutdown_complete_
ACE_Time_Value dispatch_cleanup_delay_

Detailed Description

Definition at line 25 of file DCPSInfoRepoServ.h.


Constructor & Destructor Documentation

InfoRepo::InfoRepo ( int  argc,
ACE_TCHAR argv[] 
)

Definition at line 43 of file DCPSInfoRepoServ.cpp.

References ACE_TEXT(), finalize(), and init().

00044 : ior_file_(ACE_TEXT("repo.ior"))
00045 , listen_address_given_(0)
00046 #ifdef DDS_HAS_MINIMUM_BIT
00047 , use_bits_(false)
00048 #else
00049 , use_bits_(true)
00050 #endif
00051 , resurrect_(true)
00052 , finalized_(false)
00053 , servant_finalized_(false)
00054 , federator_(this->federatorConfig_)
00055 , federatorConfig_(argc, argv)
00056 , lock_()
00057 , cond_(lock_)
00058 , shutdown_complete_(false)
00059 , dispatch_cleanup_delay_(30,0)
00060 {
00061   try {
00062     this->init();
00063   } catch (...) {
00064     this->finalize();
00065     throw;
00066   }
00067 }

Here is the call graph for this function:

InfoRepo::~InfoRepo (  ) 

Definition at line 69 of file DCPSInfoRepoServ.cpp.

References finalize().

00070 {
00071   this->finalize();
00072 }

Here is the call graph for this function:


Member Function Documentation

void InfoRepo::finalize ( void   )  [private]

Actual finalization of service resources.

Definition at line 86 of file DCPSInfoRepoServ.cpp.

References federator_, OpenDDS::Federator::ManagerImpl::finalize(), finalized_, info_servant_, CORBA::is_nil(), orb_, servant_finalized_, and TheServiceParticipant.

Referenced by InfoRepo(), run(), and ~InfoRepo().

00087 {
00088   if (this->finalized_) {
00089     return;
00090   }
00091 
00092   if (!this->servant_finalized_) {
00093     // reached if the ImR caused the ORB to shut down,
00094     // which bypasses InfoRepo::handle_exception()
00095     this->info_servant_->finalize();
00096     this->federator_.finalize();
00097     TheServiceParticipant->shutdown();
00098     this->servant_finalized_ = true;
00099   }
00100 
00101   if (!CORBA::is_nil(this->orb_)) {
00102     try {
00103       this->orb_->destroy();
00104     }
00105     catch (const CORBA::Exception&) {
00106       //finalizing anyway, not an issue.
00107     }
00108   }
00109 
00110   this->finalized_ = true;
00111 }

Here is the call graph for this function:

Here is the caller graph for this function:

int InfoRepo::handle_exception ( ACE_HANDLE  fd = ACE_INVALID_HANDLE  )  [virtual]

Handler for the reactor to dispatch finalization activity to.

Reimplemented from ACE_Event_Handler.

Definition at line 114 of file DCPSInfoRepoServ.cpp.

References federator_, OpenDDS::Federator::ManagerImpl::finalize(), info_servant_, orb_, servant_finalized_, and TheServiceParticipant.

00115 {
00116   // these should occur before ORB::shutdown() since they use the ORB/reactor
00117   this->info_servant_->finalize();
00118   this->federator_.finalize();
00119   TheServiceParticipant->shutdown();
00120   this->servant_finalized_ = true;
00121 
00122   this->orb_->shutdown(true);
00123   return 0;
00124 }

Here is the call graph for this function:

void InfoRepo::init ( void   )  [private]

Definition at line 230 of file DCPSInfoRepoServ.cpp.

References IORTable::Table::_narrow(), PortableServer::POA::_narrow(), ACE_TEXT(), ACE_ARGV_T< CHAR_TYPE >::add(), ACE_ARGV_T< CHAR_TYPE >::argc(), ACE_ARGV_T< CHAR_TYPE >::argv(), OpenDDS::Federator::Config::argv(), ACE_OS::atoi(), ACE_String_Base< ACE_CHAR_T >::c_str(), OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::Discovery::DEFAULT_REPO, dispatch_cleanup_delay_, ACE_OS::fclose(), OpenDDS::Federator::Config::federateIor(), OpenDDS::Federator::Config::federationDomain(), OpenDDS::Federator::Config::federationId(), federator_, OpenDDS::Federator::FEDERATOR_IORTABLE_KEY, federatorConfig_, ACE_OS::fopen(), ACE_OS::fprintf(), OpenDDS::DCPS::Service_Participant::get_discovery(), OpenDDS::Federator::ManagerImpl::id(), TAO_Seq_Var_Base_T< T >::in(), OpenDDS::Federator::ManagerImpl::info(), info_servant_, ior_file_, CORBA::is_nil(), LM_DEBUG, LM_ERROR, OpenDDS::Federator::ManagerImpl::localRepo(), OpenDDS::Federator::ManagerImpl::orb(), orb_, CORBA::ORB_init(), TAO_DDS_DCPSFederationId::overridden(), parse_args(), PortableServer::PERSISTENT, reassociate_delay_, OpenDDS::Federator::REPOSITORY_IORTABLE_KEY, resurrect_, OpenDDS::DCPS::Service_Participant::set_repo_ior(), OpenDDS::DCPS::static_rchandle_cast(), ACE_OS::strcmp(), PortableServer::string_to_ObjectId(), TheParticipantFactoryWithArgs, TheServiceParticipant, use_bits_, PortableServer::USER_ID, and ACE_Time_Value::zero.

Referenced by InfoRepo().

00231 {
00232   ACE_ARGV args;
00233   args.add(federatorConfig_.argv(), true /*quote arg*/);
00234 
00235   bool use_bidir = true;
00236 
00237   for (int i = 0; i < args.argc() - 1; ++i) {
00238     if (0 == ACE_OS::strcmp(args[i], ACE_TEXT("-DCPSBidirGIOP"))) {
00239       use_bidir = ACE_OS::atoi(args[i + 1]);
00240       break;
00241     }
00242   }
00243 
00244   if (use_bidir) {
00245     const ACE_TCHAR* config[] = {
00246       ACE_TEXT("-ORBSvcConfDirective"),
00247       ACE_TEXT("static Client_Strategy_Factory \"-ORBWaitStrategy rw ")
00248         ACE_TEXT("-ORBTransportMuxStrategy exclusive -ORBConnectStrategy blocked ")
00249         ACE_TEXT("-ORBConnectionHandlerCleanup 1\""),
00250       ACE_TEXT("-ORBSvcConfDirective"),
00251       ACE_TEXT("static Resource_Factory \"-ORBFlushingStrategy blocking\""),
00252       0
00253     };
00254     args.add((ACE_TCHAR**)config, true /*quote arg*/);
00255   }
00256 
00257   int argc = args.argc();
00258   orb_ = CORBA::ORB_init(argc, args.argv());
00259 
00260   this->info_servant_ =
00261     new TAO_DDS_DCPSInfo_i(this->orb_, this->resurrect_, this,
00262                            this->federatorConfig_.federationId());
00263 
00264   // Install the DCPSInfo_i into the Federator::Manager.
00265   this->federator_.info() = this->info_servant_.in();
00266 
00267   CORBA::Object_var obj =
00268     this->orb_->resolve_initial_references("RootPOA");
00269   PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
00270 
00271   PortableServer::POAManager_var poa_manager = root_poa->the_POAManager();
00272 
00273   // Use persistent and user id POA policies so the Info Repo's
00274   // object references are consistent.
00275   CORBA::PolicyList policies(2 + use_bidir);
00276   policies.length(2 + use_bidir);
00277   policies[0] = root_poa->create_id_assignment_policy(PortableServer::USER_ID);
00278   policies[1] = root_poa->create_lifespan_policy(PortableServer::PERSISTENT);
00279   if (use_bidir) {
00280     CORBA::Any policy;
00281     policy <<= BiDirPolicy::BOTH;
00282     policies[2] =
00283       orb_->create_policy(BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE, policy);
00284   }
00285   PortableServer::POA_var info_poa = root_poa->create_POA("InfoRepo",
00286                                                           poa_manager,
00287                                                           policies);
00288 
00289   // Creation of the new POAs over, so destroy the Policy_ptr's.
00290   for (CORBA::ULong i = 0; i < policies.length(); ++i) {
00291     policies[i]->destroy();
00292   }
00293 
00294   PortableServer::ObjectId_var oid =
00295     PortableServer::string_to_ObjectId("InfoRepo");
00296   info_poa->activate_object_with_id(oid, this->info_servant_.in());
00297   obj = info_poa->id_to_reference(oid);
00298   // the object is created locally, so it is safe to do an
00299   // _unchecked_narrow, this was needed to prevent an exception
00300   // when dealing with ImR-ified objects
00301   OpenDDS::DCPS::DCPSInfo_var info_repo =
00302     OpenDDS::DCPS::DCPSInfo::_unchecked_narrow(obj);
00303 
00304   CORBA::String_var objref_str =
00305     orb_->object_to_string(info_repo);
00306 
00307   // Initialize the DomainParticipantFactory
00308   DDS::DomainParticipantFactory_var dpf =
00309     TheParticipantFactoryWithArgs(argc, args.argv());
00310 
00311   // We need parse the command line options for DCPSInfoRepo after parsing DCPS specific
00312   // command line options.
00313 
00314   // Check the non-ORB arguments.
00315   this->parse_args(argc, args.argv());
00316 
00317   // Activate the POA manager before initialize built-in-topics
00318   // so invocations can be processed.
00319   poa_manager->activate();
00320 
00321   if (this->use_bits_) {
00322     if (this->info_servant_->init_transport(this->listen_address_given_,
00323         this->listen_address_str_.c_str())
00324         != 0 /* init_transport returns 0 for success */) {
00325       ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: DCPSInfoRepo::init: ")
00326                  ACE_TEXT("Unable to initialize transport.\n")));
00327       throw InitError("Unable to initialize transport.");
00328     }
00329 
00330   } else {
00331     TheServiceParticipant->set_BIT(false);
00332   }
00333 
00334   // This needs to be done after initialization since we create the reference
00335   // to ourselves in the service here.
00336   OpenDDS::DCPS::Service_Participant* serv_part = TheServiceParticipant;
00337   serv_part->set_repo_ior(objref_str, OpenDDS::DCPS::Discovery::DEFAULT_REPO);
00338 
00339   OpenDDS::DCPS::Discovery_rch disc = serv_part->get_discovery(0 /*domainId*/);
00340   OpenDDS::DCPS::InfoRepoDiscovery_rch ird =
00341     OpenDDS::DCPS::static_rchandle_cast<OpenDDS::DCPS::InfoRepoDiscovery>(disc);
00342   if (!ird->set_ORB(orb_)) {
00343     ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: DCPSInfoRepo::init: ")
00344                ACE_TEXT("Unable to set the ORB in InfoRepoDiscovery.\n")));
00345     throw InitError("Unable to set the ORB in InfoRepoDiscovery.");
00346   }
00347 
00348   // Initialize persistence _after_ initializing the participant factory
00349   // and initializing the transport.
00350   if (!this->info_servant_->init_persistence()) {
00351     ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: DCPSInfoRepo::init: ")
00352                ACE_TEXT("Unable to initialize persistence.\n")));
00353     throw InitError("Unable to initialize persistence.");
00354   }
00355 
00356   // Initialize reassociation.
00357   if (this->reassociate_delay_ != ACE_Time_Value::zero &&
00358      !this->info_servant_->init_reassociation(this->reassociate_delay_)) {
00359     ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: DCPSInfoRepo::init: ")
00360                ACE_TEXT("Unable to initialize reassociation.\n")));
00361     throw InitError("Unable to initialize reassociation.");
00362   }
00363 
00364   // Initialize dispatch checking
00365   if (this->dispatch_cleanup_delay_ != ACE_Time_Value::zero &&
00366      !this->info_servant_->init_dispatchChecking(this->dispatch_cleanup_delay_)) {
00367     ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: DCPSInfoRepo::init: ")
00368                ACE_TEXT("Unable to initialize Dispatch checking.\n")));
00369     throw InitError("Unable to initialize dispatch checking.");
00370   }
00371 
00372   // Fire up the federator.
00373   OpenDDS::Federator::Manager_var federator;
00374   CORBA::String_var               federator_ior;
00375 
00376   if (federator_.id().overridden()) {
00377     oid = PortableServer::string_to_ObjectId("Federator");
00378     info_poa->activate_object_with_id(oid, &federator_);
00379     obj = info_poa->id_to_reference(oid);
00380     federator = OpenDDS::Federator::Manager::_narrow(obj);
00381 
00382     federator_ior = orb_->object_to_string(federator);
00383 
00384     // Add a local repository reference that can be returned via a
00385     // remote call to a peer.
00386     this->federator_.localRepo(info_repo);
00387 
00388     // It should be safe to initialize the federation mechanism at this
00389     // point.  What we really needed to wait for is the initialization of
00390     // the service components - like the DomainParticipantFactory and the
00391     // repository bindings.
00392     // N.B. This is done *before* being added to the IOR table to avoid any
00393     //      races with an eager client.
00394     this->federator_.orb(this->orb_);
00395 
00396     //
00397     // Add the federator to the info_servant update manager as an
00398     // additional updater interface to be called.
00399     // N.B. This needs to be done *after* the call to load_domains()
00400     //      since that is where the update manager is initialized in the
00401     //      info startup sequencing.
00402     this->info_servant_->add(&this->federator_);
00403   }
00404 
00405   // Grab the IOR table.
00406   CORBA::Object_var table_object =
00407     this->orb_->resolve_initial_references("IORTable");
00408 
00409   IORTable::Table_var adapter = IORTable::Table::_narrow(table_object);
00410 
00411   if (CORBA::is_nil(adapter)) {
00412     ACE_ERROR((LM_ERROR, ACE_TEXT("Nil IORTable\n")));
00413 
00414   } else {
00415     adapter->bind(OpenDDS::Federator::REPOSITORY_IORTABLE_KEY, objref_str);
00416 
00417     if (this->federator_.id().overridden()) {
00418       // Bind to '/Federator'
00419       adapter->bind(OpenDDS::Federator::FEDERATOR_IORTABLE_KEY, federator_ior);
00420 
00421       // Bind to '/Federator/1382379631'
00422       std::stringstream buffer(OpenDDS::Federator::FEDERATOR_IORTABLE_KEY);
00423       buffer << "/" << std::dec << this->federatorConfig_.federationDomain();
00424       adapter->bind(buffer.str().c_str(), federator_ior);
00425     }
00426   }
00427 
00428   FILE* output_file = ACE_OS::fopen(this->ior_file_.c_str(), ACE_TEXT("w"));
00429 
00430   if (output_file == 0) {
00431     ACE_ERROR((LM_ERROR, ACE_TEXT("ERROR: Unable to open IOR file: %s\n"),
00432                ior_file_.c_str()));
00433     throw InitError("Unable to open IOR file.");
00434   }
00435 
00436   ACE_OS::fprintf(output_file, "%s", objref_str.in());
00437   ACE_OS::fclose(output_file);
00438 
00439   // Initial federation join if specified on command line.
00440   if (this->federator_.id().overridden()
00441        && !this->federatorConfig_.federateIor().empty()) {
00442     if (OpenDDS::DCPS::DCPS_debug_level > 0) {
00443       ACE_DEBUG((LM_DEBUG,
00444                  ACE_TEXT("(%P|%t) INFO: DCPSInfoRepo::init() - ")
00445                  ACE_TEXT("joining federation with repository %s\n"),
00446                  this->federatorConfig_.federateIor().c_str()));
00447     }
00448 
00449     obj = this->orb_->string_to_object(
00450           this->federatorConfig_.federateIor().c_str());
00451 
00452     if (CORBA::is_nil(obj)) {
00453       ACE_ERROR((LM_ERROR,
00454                  ACE_TEXT("(%P|%t) ERROR: could not resolve %s for initial federation.\n"),
00455                  this->federatorConfig_.federateIor().c_str()));
00456       throw InitError("Unable to resolve IOR for initial federation.");
00457     }
00458 
00459     OpenDDS::Federator::Manager_var peer =
00460       OpenDDS::Federator::Manager::_narrow(obj);
00461 
00462     if (CORBA::is_nil(peer)) {
00463       ACE_ERROR((LM_ERROR,
00464                  ACE_TEXT("(%P|%t) ERROR: could not narrow %s.\n"),
00465                  this->federatorConfig_.federateIor().c_str()));
00466       throw InitError("Unable to narrow peer for initial federation.");
00467     }
00468 
00469     // Actually join.
00470     peer = peer->join_federation(federator,
00471                           this->federatorConfig_.federationDomain());
00472   }
00473 }

Here is the call graph for this function:

Here is the caller graph for this function:

void InfoRepo::parse_args ( int  argc,
ACE_TCHAR argv[] 
) [private]

Definition at line 168 of file DCPSInfoRepoServ.cpp.

References ACE_TEXT(), ACE_TEXT_ALWAYS_CHAR, ACE_OS::atoi(), ACE_Arg_Shifter_T< class >::consume_arg(), ACE_Arg_Shifter_T< class >::cur_arg_strncasecmp(), dispatch_cleanup_delay_, ACE_Arg_Shifter_T< class >::get_the_parameter(), ACE_Arg_Shifter_T< class >::ignore_arg(), ior_file_, ACE_Arg_Shifter_T< class >::is_anything_left(), listen_address_given_, listen_address_str_, ACE_Time_Value::msec(), reassociate_delay_, resurrect_, ACE_Time_Value::sec(), TURN_ON_VERBOSE_DEBUG, usage(), and use_bits_.

Referenced by init().

00169 {
00170   ACE_Arg_Shifter arg_shifter(argc, argv);
00171 
00172   const ACE_TCHAR* current_arg = 0;
00173 
00174   while (arg_shifter.is_anything_left()) {
00175     if ((current_arg = arg_shifter.get_the_parameter(ACE_TEXT("-a"))) != 0) {
00176       this->listen_address_str_ = ACE_TEXT_ALWAYS_CHAR(current_arg);
00177       this->listen_address_given_ = 1;
00178       arg_shifter.consume_arg();
00179     // Must check for -ReassociateDelay before -r
00180     } else if ((current_arg = arg_shifter.get_the_parameter(ACE_TEXT("-ReassociateDelay"))) != 0) {
00181       long msec = ACE_OS::atoi(current_arg);
00182       this->reassociate_delay_.msec(msec);
00183 
00184       arg_shifter.consume_arg();
00185     } else if ((current_arg = arg_shifter.get_the_parameter
00186                               (ACE_TEXT("-r"))) != 0) {
00187       int p = ACE_OS::atoi(current_arg);
00188       this->resurrect_ = true;
00189 
00190       if (p == 0) {
00191         this->resurrect_ = false;
00192       }
00193 
00194       arg_shifter.consume_arg();
00195 
00196     } else if ((current_arg = arg_shifter.get_the_parameter(ACE_TEXT("-o"))) != 0) {
00197       this->ior_file_ = current_arg;
00198       arg_shifter.consume_arg();
00199 
00200     } else if (arg_shifter.cur_arg_strncasecmp(ACE_TEXT("-NOBITS")) == 0) {
00201       this->use_bits_ = false;
00202       arg_shifter.consume_arg();
00203 
00204     } else if (arg_shifter.cur_arg_strncasecmp(ACE_TEXT("-z")) == 0) {
00205       TURN_ON_VERBOSE_DEBUG;
00206       arg_shifter.consume_arg();
00207 
00208     } else if ((current_arg = arg_shifter.get_the_parameter(ACE_TEXT("-DispatchingCheckDelay"))) != 0) {
00209       long sec = ACE_OS::atoi(current_arg);
00210       this->dispatch_cleanup_delay_.sec(sec);
00211       arg_shifter.consume_arg();
00212 
00213     }
00214 
00215     // The '-?' option
00216     else if (arg_shifter.cur_arg_strncasecmp(ACE_TEXT("-?")) == 0) {
00217       this->usage(argv[0]);
00218       throw InitError("Usage");
00219     }
00220 
00221     // Anything else we just skip
00222 
00223     else {
00224       arg_shifter.ignore_arg();
00225     }
00226   }
00227 }

Here is the call graph for this function:

Here is the caller graph for this function:

void InfoRepo::run ( void   ) 

Definition at line 75 of file DCPSInfoRepoServ.cpp.

References cond_, finalize(), lock_, orb_, shutdown_complete_, and ACE_Condition< ACE_Thread_Mutex >::signal().

Referenced by ACE_TMAIN().

00076 {
00077   this->shutdown_complete_ = false;
00078   this->orb_->run();
00079   this->finalize();
00080   ACE_GUARD(ACE_Thread_Mutex, g, this->lock_);
00081   this->shutdown_complete_ = true;
00082   this->cond_.signal();
00083 }

Here is the call graph for this function:

Here is the caller graph for this function:

void InfoRepo::shutdown ( void   )  [virtual]

ShutdownInterface used to schedule a shutdown.

Implements ShutdownInterface.

Definition at line 127 of file DCPSInfoRepoServ.cpp.

References orb_.

Referenced by InfoRepo_Shutdown::operator()(), and sync_shutdown().

00128 {
00129   this->orb_->orb_core()->reactor()->notify(this);
00130   // reactor will invoke our InfoRepo::handle_exception()
00131 }

Here is the caller graph for this function:

void InfoRepo::sync_shutdown (  ) 

shutdown() and wait for it to complete: cannot be called from the reactor thread.

Definition at line 134 of file DCPSInfoRepoServ.cpp.

References cond_, lock_, shutdown(), shutdown_complete_, and ACE_Condition< ACE_Thread_Mutex >::wait().

00135 {
00136   this->shutdown();
00137   ACE_GUARD(ACE_Thread_Mutex, g, this->lock_);
00138 
00139   while (!this->shutdown_complete_) {
00140     this->cond_.wait();
00141   }
00142 }

Here is the call graph for this function:

void InfoRepo::usage ( const ACE_TCHAR cmd  )  [private]

Definition at line 145 of file DCPSInfoRepoServ.cpp.

References ACE_TEXT(), and LM_INFO.

Referenced by parse_args().

00146 {
00147   // NOTE: The federation arguments are parsed early by the
00148   //       FederationConfig object.
00149   ACE_DEBUG((LM_INFO,
00150              ACE_TEXT("Usage:\n")
00151              ACE_TEXT("  %s\n")
00152              ACE_TEXT("    -a <address> listening address for Built-In Topics\n")
00153              ACE_TEXT("    -o <file> write ior to file\n")
00154              ACE_TEXT("    -NOBITS disable the Built-In Topics\n")
00155              ACE_TEXT("    -z turn on verbose Transport logging\n")
00156              ACE_TEXT("    -r Resurrect from persistent file\n")
00157              ACE_TEXT("    -FederatorConfig <file> configure federation from <file>\n")
00158              ACE_TEXT("    -FederationId <number> value for this repository\n")
00159              ACE_TEXT("    -FederateWith <ior> federate initially with object at <ior>\n")
00160              ACE_TEXT("    -ReassociateDelay <msec> delay between reassociations\n")
00161              ACE_TEXT("    -DispatchingCheckDelay <sec> delay between checks for cleaning up dispatching connections.\n")
00162              ACE_TEXT("    -?\n")
00163              ACE_TEXT("\n"),
00164              cmd));
00165 }

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 76 of file DCPSInfoRepoServ.h.

Referenced by run(), and sync_shutdown().

Definition at line 79 of file DCPSInfoRepoServ.h.

Referenced by init(), and parse_args().

Repository Federation behaviors.

Definition at line 70 of file DCPSInfoRepoServ.h.

Referenced by finalize(), handle_exception(), and init().

Definition at line 71 of file DCPSInfoRepoServ.h.

Referenced by init().

bool InfoRepo::finalized_ [private]

Flag to indicate that finalization has already occurred.

Definition at line 66 of file DCPSInfoRepoServ.h.

Referenced by finalize().

Definition at line 73 of file DCPSInfoRepoServ.h.

Referenced by finalize(), handle_exception(), and init().

Definition at line 58 of file DCPSInfoRepoServ.h.

Referenced by init(), and parse_args().

Definition at line 60 of file DCPSInfoRepoServ.h.

Referenced by parse_args().

std::string InfoRepo::listen_address_str_ [private]

Definition at line 59 of file DCPSInfoRepoServ.h.

Referenced by parse_args().

Definition at line 75 of file DCPSInfoRepoServ.h.

Referenced by run(), and sync_shutdown().

Definition at line 56 of file DCPSInfoRepoServ.h.

Referenced by finalize(), handle_exception(), init(), run(), and shutdown().

Definition at line 63 of file DCPSInfoRepoServ.h.

Referenced by init(), and parse_args().

bool InfoRepo::resurrect_ [private]

Definition at line 62 of file DCPSInfoRepoServ.h.

Referenced by init(), and parse_args().

Definition at line 67 of file DCPSInfoRepoServ.h.

Referenced by finalize(), and handle_exception().

Definition at line 77 of file DCPSInfoRepoServ.h.

Referenced by run(), and sync_shutdown().

bool InfoRepo::use_bits_ [private]

Definition at line 61 of file DCPSInfoRepoServ.h.

Referenced by init(), and parse_args().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1