--  (c) Copyright, Real-Time Innovations, $Date:: 2012-02-16 #$ --  All rights reserved. -- --  No duplications, whole or partial, manual or electronic, may be made --  without express written permission.  Any such copies, or --  revisions thereof, must display this notice unaltered. --  This code contains trade secrets of Real-Time Innovations, Inc. with RTIDDS.Obj_Impl; with DDS.DomainParticipant; with DDS.DomainParticipantListener; private with RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h;
with RTIDDS.Low_Level.ndds_dds_c_dds_c_domain_h; --  <module name="DDSDomainModule" actualName="Domain Module">domain</module> --  <dref>DomainParticipantFactory</dref> package DDS.DomainParticipantFactory is
type Ref is new RTIDDS.Obj_Impl.Ref with private;
type Ref_Access is access all Ref'Class;
PARTICIPANT_QOS_DEFAULT : aliased DDS.DomainParticipantQos;
   --  <dref>PARTICIPANT_QOS_DEFAULT</dref> function Get_Instance return Ref_Access;
   --  Gets the singleton instance of this class.    --  <dref>DomainParticipantFactory_get_instance</dref> function Create_Participant
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T := Default_Domain;
Qos : in DDS.DomainParticipantQos := PARTICIPANT_QOS_DEFAULT;
A_Listener : in DDS.DomainParticipantListener.Ref_Access := null;
Mask : in DDS.StatusMask := DDS.STATUS_MASK_NONE)
return DDS.DomainParticipant.Ref_Access;
   --  Creates a new DDS.DomainParticipant.    --    --  Precondition    --      The specified QoS policies must be consistent or the operation will fail and no DDS.DomainParticipant will be created.    --    --  If you want to create multiple participants on a given host in the same domain,    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy).    --  This in turn will ensure each participant uses a different port number    --  (since the unicast port numbers are calculated from the participant index and the domain ID).    --    --  Note that if there is a single participant per host in a given domain,    --  the participant index can be left at the default value (-1).    --  <dref>DomainParticipantFactory_create_participant</dref> function Create_Participant_With_Profile
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T := Default_Domain;
Library_Name : in DDS.String;
Profile_Name : in DDS.String;
A_Listener : in DDS.DomainParticipantListener.Ref_Access := null;
Mask : in DDS.StatusMask := DDS.STATUS_MASK_NONE)
return DDS.DomainParticipant.Ref_Access;
function Create_Participant_With_Profile
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T := Default_Domain;
Library_Name : in Standard.String;
Profile_Name : in Standard.String;
A_Listener : in DDS.DomainParticipantListener.Ref_Access := null;
Mask : in DDS.StatusMask := DDS.STATUS_MASK_NONE)
return DDS.DomainParticipant.Ref_Access;
   --  <dref>DomainParticipantFactory_create_participant_with_profile</dref>    --  Precondition    --      The DDS.DomainParticipantQos in the input profile must be consistent,    --      or the operation will fail and no DDS.DomainParticipant will be created.    --    --  If you want to create multiple participants on a given host in the same domain,    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy).    --  This in turn will ensure each participant uses a different port number    --  (since the unicast port numbers are calculated from the participant index and the domain ID).    --    --  Note that if there is a single participant per host in a given domain,    --   the participant index can be left at the default value (-1).    --    --  MT Safety:    --      Safe.    --    --  Returns    --      domain participant or NULL on failure function Get_Or_Create_Participant
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T := Default_Domain;
Qos : in DDS.DomainParticipantQos := DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT;
A_Listener : in DDS.DomainParticipantListener.Ref_Access := null;
Mask : in DDS.StatusMask := STATUS_MASK_NONE) return DDS.DomainParticipant.Ref_Access;
function Get_Or_Create_Participant_With_Profile
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T := Default_Domain;
Library_Name : in DDS.String;
Profile_Name : in DDS.String;
A_Listener : in DDS.DomainParticipantListener.Ref_Access := null;
Mask : in DDS.StatusMask := STATUS_MASK_NONE) return DDS.DomainParticipant.Ref_Access;
   --  Precondition    --      The DDS.DomainParticipantQos in the input profile must be consistent,    --      or the operation will fail and no DDS.DomainParticipant will be created.    --    --  If you want to create multiple participants on a given host in the same domain,    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy).    --  This in turn will ensure each participant uses a different port number    --  (since the unicast port numbers are calculated from the participant index and the domain ID).    --    --  Note that if there is a single participant per host in a given domain,    --   the participant index can be left at the default value (-1).    --    --  MT Safety:    --      Safe.    --    --  Returns    --      domain participant or NULL on failure procedure Delete_Participant
(Self : not null access Ref;
A_Participant : in out DDS.DomainParticipant.Ref_Access);
   --  Deletes an existing DDS.DomainParticipant and sets the pointer to null on success.    --    --  Precondition    --      All domain entities belonging to the participant must have already been deleted.    --      Otherwise it fails with the error RETCODE_PRECONDITION_NOT_MET.    --    --  Postcondition    --      Listener installed on the DDS.DomainParticipant will not be called after this method returns successfully.    --    --  MT Safety:    --      UNSAFE. It is not safe to delete an entity while another thread may be simultaneously calling an API that uses the entity.    --    --    --  Exceptions    --      DDS_PRECONDITION_NOT_MET.    --  <dref>DomainParticipantFactory_delete_participant</dref> function Lookup_Participant
(Self : not null access Ref;
Domain_Id : in DDS.DomainId_T)
return DDS.DomainParticipant.Ref_Access;
   --  Locates an existing DDS.DomainParticipant.    --    --  If no such DDS.DomainParticipant exists, the operation will return NULL value.    --    --  If multiple DDS.DomainParticipant entities belonging to that domainId exist,    --  then the operation will return one of them. It is not specified which one.    --    --  Returns    --      domain participant if it exists, or NULL    --  <dref>DomainParticipantFactory_lookup_participant</dref> procedure Set_Default_Participant_Qos
(Self : not null access Ref;
Qos : in DDS.DomainParticipantQos);
   --  Sets the default DDS.DomainParticipantQos values for this domain participant factory.    --    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies.    --  <dref>DomainParticipantFactory_set_default_participant_qos</dref> procedure Set_Default_Participant_Qos_with_Profile
(Self : not null access Ref;
libraryName : in DDS.String;
Profile_Name : in DDS.String);
   --     Sets the default DDS.DomainParticipantQos values for this domain participant factory based on the input XML QoS profile.    --    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies.    --    --  This default value will be used for newly created DDS.DomainParticipant    --  if DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT is specified as the    --  qos parameter when DDS.DomainParticipantFactory.create_participant is called.    --  <dref>DomainParticipantFactory_set_default_participant_qos_with_profile</dref> procedure Get_Default_Participant_Qos
(Self : not null access Ref;
Qos : in out DDS.DomainParticipantQos);
   --  Initializes the QoS instance with default values.    --    --  The retrieved qos will match the set of values specified on the last successful call    --  to DDS.DomainParticipantFactory.set_default_participant_qos, or    --  DDS.DomainParticipantFactory.set_default_participant_qos_with_profile,    --  or else, if the call was never made, the default values listed in DDS.DomainParticipantQos.    --    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies.    --    --  <dref>DomainParticipantFactory_get_default_participant_qos</dref> procedure Set_Qos
(Self : not null access Ref;
Qos : in DDS.DomainParticipantFactoryQos);
   --  <dref>DomainParticipantFactory_set_qos</dref>    --  <internal>    --  Sets the value for a participant factory QoS.    --  The DDS.DomainParticipantFactoryQos::entity_factory can be changed. The other policies are immutable.    --  Note that despite having QoS, the DDS.DomainParticipantFactory is not an DDS.Entity.    --  Parameters:    --     self <<in>> Cannot be NULL.    --     qos  <<in>> Set of policies to be applied to DDS.DomainParticipantFactory. Policies must be consistent.    --                 Immutable Policies Can Only Be Changed Before Calling Any Other    --                 Data Distribution Service Functions Except for DDS.DomainParticipantFactory_Get_Qos.    --  Raises:    --     One of the Standard Return Codes, DDS.RETCODE_IMMUTABLE_POLICY if immutable policy is changed,    --     or DDS-RETCODE_INCONSISTENT_POLICY if Policies Are Inconsistent    --  See also:    --     DDS.DomainParticipantFactoryQos for rules on consistency among QoS    --  </internal> procedure Load_Profiles
(Self : not null access Ref);
   --  Loads the XML QoS profiles.    --    --  The XML QoS profiles are loaded implicitly after the first DDS.DomainParticipant    --  is created or explicitly, after a call to this method.    --    --  This has the same effect as DDS.DomainParticipantFactory.reload_profiles.    --  <dref>DomainParticipantFactory_load_profiles</dref> procedure Reload_Profiles
(Self : not null access Ref);
   --  Reloads the XML QoS profiles.    --    --  The XML QoS profiles are loaded implicitly after the first DDS.DomainParticipant    --  is created or explicitly, after a call to this method.    --    --  This has the same effect as DDS.DomainParticipantFactory.load_profiles.    --  <dref>DomainParticipantFactory_reload_profiles</dref> procedure Unload_Profiles
(Self : not null access Ref);
   --  Unloads the XML QoS profiles.    --    --  The resources associated with the XML QoS profiles are freed.    --  Any reference to the profiles after calling this method will fail with an error.    --  <dref>DomainParticipantFactory_unload_profiles</dref> procedure Set_Default_Profile
(Self : not null access Ref;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Sets the default XML profile for a DDS.DomainParticipantFactory.    --    --  This method specifies the profile that will be used as the default the next    --  time a default DomainParticipantFactory profile is needed during a call    --  to a DomainParticipantFactory method.    --  When calling a DDS.DomainParticipantFactory method that requires a    --  profile_name parameter, you can use null to refer to the default profile.    --  (This same information applies to setting a default library.)    --    --  This method does not set the default QoS for newly created DomainParticipants;    --  for this functionality, use DDS.DomainParticipantFactory.set_default_participant_qos_with_profile    --     (you may pass in null after having called set_default_profile()).    --    --  Note: if the profile set with this function no longer exists after reloading the QoS profiles    --    (for example, by changing DDS.DomainParticipantFactoryQos.profile) the    --    default profile will be set to the last one marked with the    --    attribute is_default_qos=true or null no such profile exists.    --  <dref>DomainParticipantFactory_set_default_profile</dref> procedure set_default_library
(Self : not null access Ref;
Library_Name : DDS.String);
   --  Sets the default XML library for a DDS.DomainParticipantFactory.    --    --  Any API requiring a library_name as a parameter can use DDS.Null_String    --  to refer to the default library set with this function.    --    --  Note: if the library set with this function no longer exists after reloading    --  the QoS profiles (for example, by changing DDS.DomainParticipantFactoryQos.profile)    --  the default library will be set to the last library containing a profile    --  with the attribute is_default_qos=true or null no such library exists.    --  <dref>DomainParticipantFactory_set_default_library</dref> function get_default_library
(Self : not null access Ref) return DDS.String;
   --  Gets the default XML library associated with a DDS.DomainParticipantFactory.    --    --  @return    --    The returned library name is determined as follows:    --    --      If it was previously set with DDS.DomainParticipantFactory.set_default_library,    --          this function returns that library name    --      Otherwise, if one or more profiles have the XML attribute is_default_qos="true",    --         this function returns the library where the last one is contained.    --      Otherwise, this function returns null.    --  <dref>DomainParticipantFactory_get_default_library</dref> function get_default_Profile
(Self : not null access Ref) return DDS.String;
   --  Gets the default XML profile associated with a DDS.DomainParticipantFactory.    --    --  Returns    --    The returned profile name is determined as follows:    --    --      If it was previously set with DDS.DomainParticipantFactory.set_default_profile,    --          this function returns that profile name    --      Otherwise, if one or more profile have the XML attribute is_default_qos="true",    --         this function returns the profile where the last one is contained.    --      Otherwise, this function returns null.    --  <dref>DomainParticipantFactory_get_default_profile</dref> function get_default_profile_library
(Self : not null access Ref) return DDS.String;
   --    --  Gets the library where the default XML profile is contained for a DDS.DomainParticipantFactory.    --    --  The default profile library is automatically set when DDS.DomainParticipantFactory.set_default_profile is called.    --    --  This library can be different than the DDS.DomainParticipantFactory default library    --  <dref>DomainParticipantFactory_get_default_profile_library</dref> procedure get_qos_profile_libraries
(Self : not null access Ref;
libSeq : not null access DDS.String_Seq.Sequence);
function get_qos_profile_libraries
(Self : not null access Ref) return DDS.String_Seq.Sequence;
   --  Gets the names of all XML QoS profile libraries associated with the DDS.DomainParticipantFactory    --  <dref>DomainParticipantFactory_get_qos_profile_libraries</dref> procedure get_qos_profiles
(Self : not null access Ref;
profSeq : not null access DDS.String_Seq.Sequence;
libName : in DDS.String);
function get_qos_profiles
(Self : not null access Ref;
libName : in DDS.String) return DDS.String_Seq.Sequence;
   --  Gets the names of all XML QoS profiles associated with the input XML QoS profile library.    --  <dref>DomainParticipantFactory_get_qos_profiles</dref>    ----------------------------------------------------------- procedure Get_Participant_Qos_From_Profile
(Self : not null access Ref;
QoS : in out DDS.DomainParticipantQos;
Library_Name : DDS.String;
Profile_Name : DDS.String);
--  Gets the DDSDomainParticipantQos values associated with the input XML QoS profile. -- -- --      qos           Qos to be filled up.. --      library_name  Library name containing the XML QoS profile. --                      If library_name is null RTI Connext will use the --                      default library (see DDS.DomainParticipantFactory.set_default_library). --      profile_name  XML QoS Profile name. If profile_name is null --                      RTI Connext will use the default profile (see DDS.DomainParticipantFactory.set_default_profile). -- --  If the input profile cannot be found, the method fails with DDS.RETCODE_ERROR.    --  <dref>DomainParticipantFactory_get_participant_qos_from_profile</dref>    ------------------------------------------------------ procedure Get_Publisher_Qos_From_Profile
(Self : not null access Ref;
QoS : in out DDS.PublisherQos;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Gets the DDS.PublisherQos values associated with the input XML QoS profile.    --  <dref>DomainParticipantFactory_get_publisher_qos_from_profile</dref>    ------------------------------------------------------ procedure Get_Subscriber_Qos_From_Profile
(Self : not null access Ref;
QoS : in out DDS.SubscriberQos;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Gets the DDS.SubscriberQos values associated with the input XML QoS profile.    --  <dref>DomainParticipantFactory_get_subscriber_qos_from_profile</dref>    ------------------------------------------------------ procedure get_datareader_qos_from_profile
(Self : not null access Ref;
QoS : in out DDS.DataReaderQoS;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Gets the DDS.DataReaderQoS values associated with the input XML QoS profile.    --  <dref>DomainParticipantFactory_get_datareader_qos_from_profile</dref>    ------------------------------------------------------ procedure get_datareader_qos_from_profile_w_topic_name
(Self : not null access Ref;
QoS : in out DDS.DataReaderQoS;
Library_Name : DDS.String;
Profile_Name : DDS.String;
topic_name : DDS.String);
   --  Gets the DDS.DataReaderQoS values associated with the input XML QoS profile while applying topic filters to the input topic name.    --  <dref>DomainParticipantFactory_get_datareader_qos_from_profile_w_topic_name</dref>    ------------------------------------------------------ procedure get_datawriter_qos_from_profile
(Self : not null access Ref;
QoS : in out DDS.DataWriterQos;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Gets the DDS.DataWriterQos values associated with the input XML QoS profile.    --  <dref>DomainParticipantFactory_get_datawriter_qos_from_profile</dref>    ------------------------------------------------------ procedure get_datawriter_qos_from_profile_w_topic_name
(Self : not null access Ref;
QoS : in out DDS.DataWriterQos;
Library_Name : DDS.String;
Profile_Name : DDS.String;
topic_name : DDS.String);
   --  Gets the DDS.DataWriterQos values associated with the input XML QoS profile while applying topic filters to the input topic name.    --  <dref>DomainParticipantFactory_get_datawriter_qos_from_profile_w_topic_name</dref>    ------------------------------------------------------ procedure get_topic_qos_from_profile
(Self : not null access Ref;
QoS : in out DDS.TopicQos;
Library_Name : DDS.String;
Profile_Name : DDS.String);
   --  Gets the DDS.TopicQos values associated with the input XML QoS profile.    --  <dref>DomainParticipantFactory_get_topic_qos_from_profile</dref>    ------------------------------------------------------ procedure Get_Topic_Qos_From_Profile_W_Topic_Name
(Self : not null access Ref;
QoS : in out DDS.TopicQos;
Library_Name : DDS.String;
Profile_Name : DDS.String;
topic_name : DDS.String);
   --  Gets the DDS.TopicQos values associated with the input XML QoS profile while applying topic filters to the input topic name.    --  <dref>DomainParticipantFactory_get_topic_qos_from_profile_w_topic_name</dref> procedure Get_Qos
(Self : not null access Ref;
Qos : in out DDS.DomainParticipantFactoryQos);
   --  Gets the value for participant factory QoS.    --  <dref>DomainParticipantFactory_get_qos</dref> procedure Finalize_Instance (Self : in out Ref_Access);
   --  <dref>DomainParticipantFactory_finalize_instance</dref> procedure Unregister_Thread (Self : not null access Ref);
   --  <dref>DomainParticipantFactory_unregister_thread</dref> type DDS_DomainParticipantFactory_Access is access all RTIDDS.Low_Level.ndds_dds_c_dds_c_domain_h.DDS_DomainParticipantFactory with Storage_Size => 0;
function GetInterface (Self : not null access Ref) return DDS_DomainParticipantFactory_Access;
procedure SetInterface (Self : not null access Ref; To : DDS_DomainParticipantFactory_Access);
private type Ref is new RTIDDS.Obj_Impl.Ref with null record;
protected Initializeer is
      procedure Initialize;    end Initializeer;    procedure On_Thread_Started_Callback (OnStartedParam : System.Address;
      Worker         : access RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h.REDAWorker);    pragma Convention (C, On_Thread_Started_Callback);    procedure On_Thread_Stopped_Callback (OnStartedParam : System.Address;
      Worker         : access RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h.REDAWorker);    pragma Convention (C, On_Thread_Stopped_Callback); end DDS.DomainParticipantFactory;