Service_Participant.h

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #ifndef OPENDDS_DDS_DCPS_SERVICE_PARTICIPANT_H
00009 #define OPENDDS_DDS_DCPS_SERVICE_PARTICIPANT_H
00010 
00011 #include "dds/DdsDcpsInfrastructureC.h"
00012 #include "dds/DdsDcpsDomainC.h"
00013 #include "dds/DdsDcpsInfoUtilsC.h"
00014 
00015 #include "dds/DCPS/Definitions.h"
00016 #include "dds/DCPS/MonitorFactory.h"
00017 #include "dds/DCPS/Discovery.h"
00018 #include "dds/DCPS/PoolAllocator.h"
00019 #include "dds/DCPS/DomainParticipantFactoryImpl.h"
00020 #include "dds/DCPS/unique_ptr.h"
00021 
00022 
00023 #include "ace/Task.h"
00024 #include "ace/Configuration.h"
00025 #include "ace/Time_Value.h"
00026 #include "ace/ARGV.h"
00027 #include "ace/Barrier.h"
00028 
00029 #include "Recorder.h"
00030 #include "Replayer.h"
00031 #include <memory>
00032 
00033 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00034 #pragma once
00035 #endif /* ACE_LACKS_PRAGMA_ONCE */
00036 
00037 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00038 
00039 namespace OpenDDS {
00040 namespace DCPS {
00041 
00042 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE
00043 class DataDurabilityCache;
00044 #endif
00045 class Monitor;
00046 
00047 const char DEFAULT_ORB_NAME[] = "OpenDDS_DCPS";
00048 
00049 /**
00050  * @class Service_Participant
00051  *
00052  * @brief Service entrypoint.
00053  *
00054  * This class is a singleton that allows DDS client applications to
00055  * configure OpenDDS.
00056  *
00057  * @note This class may read a configuration file that will
00058  *       configure Transports as well as DCPS (e.g. number of ORB
00059  *       threads).
00060  */
00061 class OpenDDS_Dcps_Export Service_Participant {
00062 public:
00063 
00064   /// Domain value for the default repository IOR.
00065   enum { ANY_DOMAIN = -1 };
00066 
00067   Service_Participant();
00068 
00069   ~Service_Participant();
00070 
00071   /// Return a singleton instance of this class.
00072   static Service_Participant* instance();
00073 
00074   /// Get the common timer interface.
00075   /// Intended for use by OpenDDS internals only.
00076   ACE_Reactor_Timer_Interface* timer() const;
00077 
00078   ACE_Reactor* reactor() const;
00079 
00080   ACE_thread_t reactor_owner() const;
00081 
00082   /**
00083    * Initialize the DDS client environment and get the
00084    * @c DomainParticipantFactory.
00085    *
00086    * This method consumes @c -DCPS* and -ORB* options and their arguments.
00087    */
00088   DDS::DomainParticipantFactory_ptr get_domain_participant_factory(
00089     int &argc = zero_argc,
00090     ACE_TCHAR *argv[] = 0);
00091 
00092 #ifdef ACE_USES_WCHAR
00093   DDS::DomainParticipantFactory_ptr
00094   get_domain_participant_factory(int &argc, char *argv[]);
00095 #endif
00096 
00097   /**
00098    * Stop being a participant in the service.
00099    *
00100    * @note Required Precondition: all DomainParticipants have been
00101    *       deleted.
00102    */
00103   void shutdown();
00104 
00105   /// Accessor for if the participant has been shutdown
00106   bool is_shut_down() const;
00107 
00108   /// Accessor of the Discovery object for a given domain.
00109   Discovery_rch get_discovery(const DDS::DomainId_t domain);
00110 
00111   /** Accessors of the qos policy initial values. **/
00112   DDS::UserDataQosPolicy            initial_UserDataQosPolicy() const;
00113   DDS::TopicDataQosPolicy           initial_TopicDataQosPolicy() const;
00114   DDS::GroupDataQosPolicy           initial_GroupDataQosPolicy() const;
00115   DDS::TransportPriorityQosPolicy   initial_TransportPriorityQosPolicy() const;
00116   DDS::LifespanQosPolicy            initial_LifespanQosPolicy() const;
00117   DDS::DurabilityQosPolicy          initial_DurabilityQosPolicy() const;
00118   DDS::DurabilityServiceQosPolicy   initial_DurabilityServiceQosPolicy() const;
00119   DDS::PresentationQosPolicy        initial_PresentationQosPolicy() const;
00120   DDS::DeadlineQosPolicy            initial_DeadlineQosPolicy() const;
00121   DDS::LatencyBudgetQosPolicy       initial_LatencyBudgetQosPolicy() const;
00122   DDS::OwnershipQosPolicy           initial_OwnershipQosPolicy() const;
00123 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE
00124   DDS::OwnershipStrengthQosPolicy   initial_OwnershipStrengthQosPolicy() const;
00125 #endif
00126   DDS::LivelinessQosPolicy          initial_LivelinessQosPolicy() const;
00127   DDS::TimeBasedFilterQosPolicy     initial_TimeBasedFilterQosPolicy() const;
00128   DDS::PartitionQosPolicy           initial_PartitionQosPolicy() const;
00129   DDS::ReliabilityQosPolicy         initial_ReliabilityQosPolicy() const;
00130   DDS::DestinationOrderQosPolicy    initial_DestinationOrderQosPolicy() const;
00131   DDS::HistoryQosPolicy             initial_HistoryQosPolicy() const;
00132   DDS::ResourceLimitsQosPolicy      initial_ResourceLimitsQosPolicy() const;
00133   DDS::EntityFactoryQosPolicy       initial_EntityFactoryQosPolicy() const;
00134   DDS::WriterDataLifecycleQosPolicy initial_WriterDataLifecycleQosPolicy() const;
00135   DDS::ReaderDataLifecycleQosPolicy initial_ReaderDataLifecycleQosPolicy() const;
00136   DDS::PropertyQosPolicy            initial_PropertyQosPolicy() const;
00137 
00138   DDS::DomainParticipantFactoryQos  initial_DomainParticipantFactoryQos() const;
00139   DDS::DomainParticipantQos         initial_DomainParticipantQos() const;
00140   DDS::TopicQos                     initial_TopicQos() const;
00141   DDS::DataWriterQos                initial_DataWriterQos() const;
00142   DDS::PublisherQos                 initial_PublisherQos() const;
00143   DDS::DataReaderQos                initial_DataReaderQos() const;
00144   DDS::SubscriberQos                initial_SubscriberQos() const;
00145 
00146   /**
00147    * This accessor is to provide the configurable number of chunks
00148    * that a @c DataWriter's cached allocator need to allocate when
00149    * the resource limits are infinite.  Has a default, can be set
00150    * by the @c -DCPSChunks option, or by @c n_chunks() setter.
00151    */
00152   size_t   n_chunks() const;
00153 
00154   /// Set the value returned by @c n_chunks() accessor.
00155   /**
00156    * @see Accessor description.
00157    */
00158   void     n_chunks(size_t chunks);
00159 
00160   /// This accessor is to provide the multiplier for allocators
00161   /// that have resources used on a per association basis.
00162   /// Has a default, can be set by the
00163   /// @c -DCPSChunkAssociationMutltiplier
00164   /// option, or by @c n_association_chunk_multiplier() setter.
00165   size_t   association_chunk_multiplier() const;
00166 
00167   /// Set the value returned by
00168   /// @c n_association_chunk_multiplier() accessor.
00169   /**
00170    * See accessor description.
00171    */
00172   void     association_chunk_multiplier(size_t multiplier);
00173 
00174   /// Set the Liveliness propagation delay factor.
00175   /// @param factor % of lease period before sending a liveliness
00176   ///               message.
00177   void liveliness_factor(int factor);
00178 
00179   /// Accessor of the Liveliness propagation delay factor.
00180   /// @return % of lease period before sending a liveliness
00181   ///         message.
00182   int liveliness_factor() const;
00183 
00184   ///
00185   void add_discovery(Discovery_rch discovery);
00186 
00187   bool set_repo_ior(const char* ior,
00188                     Discovery::RepoKey key = Discovery::DEFAULT_REPO,
00189                     bool attach_participant = true);
00190 
00191 #ifdef DDS_HAS_WCHAR
00192   /// Convenience overload for wchar_t
00193   bool set_repo_ior(const wchar_t* ior,
00194                     Discovery::RepoKey key = Discovery::DEFAULT_REPO,
00195                     bool attach_participant = true);
00196 #endif
00197 
00198   bool use_bidir_giop() const;
00199 
00200   /// Rebind a domain from one repository to another.
00201   void remap_domains(Discovery::RepoKey oldKey,
00202                      Discovery::RepoKey newKey,
00203                      bool attach_participant = true);
00204 
00205   /// Bind DCPSInfoRepo IORs to domains.
00206   void set_repo_domain(const DDS::DomainId_t domain,
00207                        Discovery::RepoKey repo,
00208                        bool attach_participant = true);
00209 
00210   void set_default_discovery(const Discovery::RepoKey& defaultDiscovery);
00211   Discovery::RepoKey get_default_discovery();
00212 
00213   /// Convert domainId to repository key.
00214   Discovery::RepoKey domain_to_repo(const DDS::DomainId_t domain) const;
00215 
00216   /// Failover to a new repository.
00217   void repository_lost(Discovery::RepoKey key);
00218 
00219   /// Accessors for FederationRecoveryDuration in seconds.
00220   //@{
00221   int& federation_recovery_duration();
00222   int  federation_recovery_duration() const;
00223   //@}
00224 
00225   /// Accessors for FederationInitialBackoffSeconds.
00226   //@{
00227   int& federation_initial_backoff_seconds();
00228   int  federation_initial_backoff_seconds() const;
00229   //@}
00230 
00231   /// Accessors for FederationBackoffMultiplier.
00232   //@{
00233   int& federation_backoff_multiplier();
00234   int  federation_backoff_multiplier() const;
00235   //@}
00236 
00237   /// Accessors for FederationLivelinessDuration.
00238   //@{
00239   int& federation_liveliness();
00240   int  federation_liveliness() const;
00241   //@}
00242 
00243   /// Accessors for scheduling policy value.
00244   //@{
00245   long& scheduler();
00246   long  scheduler() const;
00247   //@}
00248 
00249   /// Accessors for PublisherContentFilter.
00250   //@{
00251   bool& publisher_content_filter();
00252   bool  publisher_content_filter() const;
00253   //@}
00254 
00255   /// Accessor for pending data timeout.
00256   ACE_Time_Value pending_timeout() const;
00257 
00258   /// Accessors for priority extremums for the current scheduler.
00259   //@{
00260   int priority_min() const;
00261   int priority_max() const;
00262   //@}
00263 
00264   /**
00265    * Accessors for @c bit_transport_port_.
00266    *
00267    * The accessor is used for client application to configure
00268    * the local transport listening port number.
00269    *
00270    * @note The default port is INVALID. The user needs call
00271    *       this function to setup the desired port number.
00272    */
00273   //@{
00274   int bit_transport_port() const;
00275   void bit_transport_port(int port);
00276   //@}
00277 
00278   OPENDDS_STRING bit_transport_ip() const;
00279 
00280   /**
00281    * Accessor for bit_lookup_duration_msec_.
00282    * The accessor is used for client application to configure
00283    * the timeout for lookup data from the builtin topic
00284    * datareader.  Value is in milliseconds.
00285    */
00286   //@{
00287   int bit_lookup_duration_msec() const;
00288   void bit_lookup_duration_msec(int msec);
00289   //@}
00290 
00291 #if defined(OPENDDS_SECURITY)
00292   bool get_security() {
00293     return security_enabled_;
00294   }
00295 
00296   void set_security(bool b) {
00297     security_enabled_ = b;
00298   }
00299 #endif
00300 
00301   bool get_BIT() {
00302     return bit_enabled_;
00303   }
00304 
00305   void set_BIT(bool b) {
00306     bit_enabled_ = b;
00307   }
00308 
00309   ACE_CString default_address() const;
00310 
00311 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE
00312   /// Get the data durability cache corresponding to the given
00313   /// DurabilityQosPolicy and sample list depth.
00314   DataDurabilityCache * get_data_durability_cache(
00315     DDS::DurabilityQosPolicy const & durability);
00316 #endif
00317 
00318   /// For internal OpenDDS Use (needed for monitor code)
00319   typedef OPENDDS_MAP(Discovery::RepoKey, Discovery_rch) RepoKeyDiscoveryMap;
00320   const RepoKeyDiscoveryMap& discoveryMap() const;
00321   typedef OPENDDS_MAP(DDS::DomainId_t, Discovery::RepoKey) DomainRepoMap;
00322   const DomainRepoMap& domainRepoMap() const;
00323 
00324   void register_discovery_type(const char* section_name,
00325                                Discovery::Config* cfg);
00326 
00327 #ifndef OPENDDS_SAFETY_PROFILE
00328   ACE_ARGV* ORB_argv() { return &ORB_argv_; }
00329 #endif
00330 
00331   /**
00332    *  Create a Recorder object.
00333    */
00334   Recorder_ptr create_recorder(DDS::DomainParticipant_ptr participant,
00335                                DDS::Topic_ptr a_topic,
00336                                const DDS::SubscriberQos & subscriber_qos,
00337                                const DDS::DataReaderQos & datareader_qos,
00338                                const RecorderListener_rch & a_listener );
00339 
00340 
00341 
00342   /**
00343    *  Delete an existing Recorder from its DomainParticipant.
00344    */
00345   DDS::ReturnCode_t delete_recorder(Recorder_ptr recorder);
00346 
00347   /**
00348    *  Create a Replayer object
00349    */
00350   Replayer_ptr create_replayer(DDS::DomainParticipant_ptr participant,
00351                                DDS::Topic_ptr a_topic,
00352                                const DDS::PublisherQos & publisher_qos,
00353                                const DDS::DataWriterQos & datawriter_qos,
00354                                const ReplayerListener_rch & a_listener );
00355 
00356   /**
00357    *  Delete an existing Replayer from its DomainParticipant.
00358    */
00359   DDS::ReturnCode_t delete_replayer(Replayer_ptr replayer);
00360 
00361   /**
00362    *  Create a topic that does not have the data type registered.
00363    */
00364   DDS::Topic_ptr create_typeless_topic(DDS::DomainParticipant_ptr participant,
00365                                       const char * topic_name,
00366                                       const char * type_name,
00367                                       bool type_has_keys,
00368                                       const DDS::TopicQos & qos,
00369                                       DDS::TopicListener_ptr a_listener = 0,
00370                                       DDS::StatusMask mask = 0);
00371 
00372   /**
00373    * Import the configuration file to the ACE_Configuration_Heap
00374    * object and load common section configuration to the
00375    * Service_Participant singleton and load the factory and
00376    * transport section configuration to the TransportRegistry
00377    * singleton.
00378    */
00379   int load_configuration(ACE_Configuration_Heap& cf,
00380                          const ACE_TCHAR* filename);
00381 
00382 #ifdef OPENDDS_SAFETY_PROFILE
00383   /**
00384    * Configure the safety profile pool
00385    */
00386   void configure_pool();
00387 #endif
00388 
00389 private:
00390 
00391   /// Initialize default qos.
00392   void initialize();
00393 
00394   /// Initialize the thread scheduling and initial priority.
00395   void initializeScheduling();
00396 
00397   /**
00398    * Parse the command line for user options. e.g. "-DCPSInfoRepo <iorfile>".
00399    * It consumes -DCPS* options and their arguments
00400    */
00401   int parse_args(int &argc, ACE_TCHAR *argv[]);
00402 
00403   /**
00404    * Import the configuration file to the ACE_Configuration_Heap
00405    * object and load common section configuration to the
00406    * Service_Participant singleton and load the factory and
00407    * transport section configuration to the TransportRegistry
00408    * singleton.
00409    */
00410   int load_configuration();
00411 
00412   /**
00413    * Load the common configuration to the Service_Participant
00414    * singleton.
00415    *
00416    * @note The values from command line can overwrite the values
00417    *       in configuration file.
00418    */
00419   int load_common_configuration(ACE_Configuration_Heap& cf,
00420                                 const ACE_TCHAR* filename);
00421 
00422   /**
00423    * Load the domain configuration to the Service_Participant
00424    * singleton.
00425    */
00426   int load_domain_configuration(ACE_Configuration_Heap& cf,
00427                                 const ACE_TCHAR* filename);
00428 
00429   /**
00430    * Load the discovery configuration to the Service_Participant
00431    * singleton.
00432    */
00433   int load_discovery_configuration(ACE_Configuration_Heap& cf,
00434                                    const ACE_TCHAR* section_name);
00435 
00436   typedef OPENDDS_MAP(OPENDDS_STRING, container_supported_unique_ptr<Discovery::Config>) DiscoveryTypes;
00437   DiscoveryTypes discovery_types_;
00438 
00439 #ifndef OPENDDS_SAFETY_PROFILE
00440   ACE_ARGV ORB_argv_;
00441 #endif
00442 
00443   unique_ptr<ACE_Reactor> reactor_; //TODO: integrate with threadpool
00444   ACE_thread_t reactor_owner_;
00445 
00446   struct ReactorTask : ACE_Task_Base {
00447     ReactorTask()
00448       : barrier_(2)
00449     { }
00450     int svc();
00451     void wait_for_startup() { barrier_.wait(); }
00452   private:
00453     ACE_Barrier barrier_;
00454   } reactor_task_;
00455 
00456   RcHandle<DomainParticipantFactoryImpl> dp_factory_servant_;
00457 
00458   /// The RepoKey to Discovery object mapping
00459   RepoKeyDiscoveryMap discoveryMap_;
00460 
00461   /// The DomainId to RepoKey mapping.
00462   DomainRepoMap domainRepoMap_;
00463 
00464   Discovery::RepoKey defaultDiscovery_;
00465 
00466   /// The lock to serialize DomainParticipantFactory singleton
00467   /// creation and shutdown.
00468   TAO_SYNCH_MUTEX      factory_lock_;
00469 
00470   /// The initial values of qos policies.
00471   DDS::UserDataQosPolicy              initial_UserDataQosPolicy_;
00472   DDS::TopicDataQosPolicy             initial_TopicDataQosPolicy_;
00473   DDS::GroupDataQosPolicy             initial_GroupDataQosPolicy_;
00474   DDS::TransportPriorityQosPolicy     initial_TransportPriorityQosPolicy_;
00475   DDS::LifespanQosPolicy              initial_LifespanQosPolicy_;
00476   DDS::DurabilityQosPolicy            initial_DurabilityQosPolicy_;
00477   DDS::DurabilityServiceQosPolicy     initial_DurabilityServiceQosPolicy_;
00478   DDS::PresentationQosPolicy          initial_PresentationQosPolicy_;
00479   DDS::DeadlineQosPolicy              initial_DeadlineQosPolicy_;
00480   DDS::LatencyBudgetQosPolicy         initial_LatencyBudgetQosPolicy_;
00481   DDS::OwnershipQosPolicy             initial_OwnershipQosPolicy_;
00482 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE
00483   DDS::OwnershipStrengthQosPolicy     initial_OwnershipStrengthQosPolicy_;
00484 #endif
00485   DDS::LivelinessQosPolicy            initial_LivelinessQosPolicy_;
00486   DDS::TimeBasedFilterQosPolicy       initial_TimeBasedFilterQosPolicy_;
00487   DDS::PartitionQosPolicy             initial_PartitionQosPolicy_;
00488   DDS::ReliabilityQosPolicy           initial_ReliabilityQosPolicy_;
00489   DDS::DestinationOrderQosPolicy      initial_DestinationOrderQosPolicy_;
00490   DDS::HistoryQosPolicy               initial_HistoryQosPolicy_;
00491   DDS::ResourceLimitsQosPolicy        initial_ResourceLimitsQosPolicy_;
00492   DDS::EntityFactoryQosPolicy         initial_EntityFactoryQosPolicy_;
00493   DDS::WriterDataLifecycleQosPolicy   initial_WriterDataLifecycleQosPolicy_;
00494   DDS::ReaderDataLifecycleQosPolicy   initial_ReaderDataLifecycleQosPolicy_;
00495   DDS::PropertyQosPolicy              initial_PropertyQosPolicy_;
00496 
00497   DDS::DomainParticipantQos           initial_DomainParticipantQos_;
00498   DDS::TopicQos                       initial_TopicQos_;
00499   DDS::DataWriterQos                  initial_DataWriterQos_;
00500   DDS::PublisherQos                   initial_PublisherQos_;
00501   DDS::DataReaderQos                  initial_DataReaderQos_;
00502   DDS::SubscriberQos                  initial_SubscriberQos_;
00503   DDS::DomainParticipantFactoryQos    initial_DomainParticipantFactoryQos_;
00504 
00505   /// The configurable value of the number chunks that the
00506   /// @c DataWriter's cached allocator can allocate.
00507   size_t                                 n_chunks_;
00508 
00509   /// The configurable value of maximum number of expected
00510   /// associations for publishers and subscribers.  This is used
00511   /// to pre allocate enough memory and reduce heap allocations.
00512   size_t                                 association_chunk_multiplier_;
00513 
00514   /// The propagation delay factor.
00515   int                                    liveliness_factor_;
00516 
00517   /// The builtin topic transport address.
00518   ACE_TString bit_transport_ip_;
00519 
00520   /// The builtin topic transport port number.
00521   int bit_transport_port_;
00522 
00523   bool bit_enabled_;
00524 
00525 #if defined(OPENDDS_SECURITY)
00526   bool security_enabled_;
00527 #endif
00528 
00529   /// The timeout for lookup data from the builtin topic
00530   /// @c DataReader.
00531   int bit_lookup_duration_msec_;
00532 
00533   /// The default network address to use.
00534   ACE_CString default_address_;
00535 
00536   /// The configuration object that imports the configuration
00537   /// file.
00538   ACE_Configuration_Heap cf_;
00539 
00540   /// Specifies the name of the transport configuration that
00541   /// is used when the entity tree does not specify one.  If
00542   /// not set, the default transport configuration is used.
00543   ACE_TString global_transport_config_;
00544 
00545 public:
00546   /// Pointer to the monitor factory that is used to create
00547   /// monitor objects.
00548   MonitorFactory* monitor_factory_;
00549 
00550   /// Pointer to the monitor object for this object
00551   unique_ptr<Monitor> monitor_;
00552 
00553 private:
00554   /// The FederationRecoveryDuration value in seconds.
00555   int federation_recovery_duration_;
00556 
00557   /// The FederationInitialBackoffSeconds value.
00558   int federation_initial_backoff_seconds_;
00559 
00560   /// This FederationBackoffMultiplier.
00561   int federation_backoff_multiplier_;
00562 
00563   /// This FederationLivelinessDuration.
00564   int federation_liveliness_;
00565 
00566   /// Scheduling policy value from configuration file.
00567   ACE_TString schedulerString_;
00568 
00569   /// Scheduler time slice from configuration file.
00570   ACE_Time_Value schedulerQuantum_;
00571 
00572 #if defined OPENDDS_SAFETY_PROFILE && defined ACE_HAS_ALLOC_HOOKS
00573   /// Pool size from configuration file.
00574   size_t pool_size_;
00575 
00576   /// Pool granularity from configuration file.
00577   size_t pool_granularity_;
00578 #endif
00579 
00580   /// Scheduling policy value used for setting thread priorities.
00581   long scheduler_;
00582 
00583   /// Minimum priority value for the current scheduling policy.
00584   int priority_min_;
00585 
00586   /// Maximum priority value for the current scheduling policy.
00587   int priority_max_;
00588 
00589   /// Allow the publishing side to do content filtering?
00590   bool publisher_content_filter_;
00591 
00592 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE
00593 
00594   /// The @c TRANSIENT data durability cache.
00595   unique_ptr<DataDurabilityCache> transient_data_cache_;
00596 
00597   /// The @c PERSISTENT data durability cache.
00598   unique_ptr<DataDurabilityCache> persistent_data_cache_;
00599 
00600   /// The @c PERSISTENT data durability directory.
00601   ACE_CString persistent_data_dir_;
00602 
00603 #endif
00604 
00605   /// Number of seconds to wait on pending samples to be sent
00606   /// or dropped.
00607   ACE_Time_Value pending_timeout_;
00608 
00609   /// Enable TAO's Bidirectional GIOP?
00610   bool bidir_giop_;
00611 
00612   /// Enable Monitor functionality
00613   bool monitor_enabled_;
00614 
00615   /// Used to track state of service participant
00616   bool shut_down_;
00617 
00618   /// Guard access to the internal maps.
00619   ACE_Recursive_Thread_Mutex maps_lock_;
00620 
00621   static int zero_argc;
00622 };
00623 
00624 #   define TheServiceParticipant OpenDDS::DCPS::Service_Participant::instance()
00625 
00626 #   define TheParticipantFactory TheServiceParticipant->get_domain_participant_factory()
00627 
00628 #   define TheParticipantFactoryWithArgs(argc, argv) TheServiceParticipant->get_domain_participant_factory(argc, argv)
00629 
00630 } // namespace DCPS
00631 } // namespace OpenDDS
00632 
00633 OPENDDS_END_VERSIONED_NAMESPACE_DECL
00634 
00635 #if defined(__ACE_INLINE__)
00636 #include "Service_Participant.inl"
00637 #endif /* __ACE_INLINE__ */
00638 
00639 #endif /* OPENDDS_DCPS_SERVICE_PARTICIPANT_H  */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1