1. --  (c) Copyright, Real-Time Innovations, $Date:: 2012-02-16 #$ 
  2. --  All rights reserved. 
  3. -- 
  4. --  No duplications, whole or partial, manual or electronic, may be made 
  5. --  without express written permission.  Any such copies, or 
  6. --  revisions thereof, must display this notice unaltered. 
  7. --  This code contains trade secrets of Real-Time Innovations, Inc. 
  8.  
  9.  
  10.  
  11. with RTIDDS.Obj_Impl; 
  12. with DDS.DomainParticipant; 
  13. with DDS.DomainParticipantListener; 
  14. private with RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h; 
  15. with RTIDDS.Low_Level.ndds_dds_c_dds_c_domain_h; 
  16.  
  17. --  <module name="DDSDomainModule" actualName="Domain Module">domain</module> 
  18. --  <dref>DomainParticipantFactory</dref> 
  19. package DDS.DomainParticipantFactory is 
  20.  
  21.    type Ref is new RTIDDS.Obj_Impl.Ref with private; 
  22.    type Ref_Access is access all Ref'Class; 
  23.  
  24.    PARTICIPANT_QOS_DEFAULT : aliased DDS.DomainParticipantQos; 
  25.    --  <dref>PARTICIPANT_QOS_DEFAULT</dref> 
  26.  
  27.    function Get_Instance return Ref_Access; 
  28.    --  Gets the singleton instance of this class. 
  29.    --  <dref>DomainParticipantFactory_get_instance</dref> 
  30.  
  31.    function Create_Participant 
  32.      (Self       : not null access Ref; 
  33.       Domain_Id  : in DDS.DomainId_T := Default_Domain; 
  34.       Qos        : in DDS.DomainParticipantQos := PARTICIPANT_QOS_DEFAULT; 
  35.       A_Listener : in DDS.DomainParticipantListener.Ref_Access := null; 
  36.       Mask       : in DDS.StatusMask := DDS.STATUS_MASK_NONE) 
  37.       return DDS.DomainParticipant.Ref_Access; 
  38.    --  Creates a new DDS.DomainParticipant. 
  39.    -- 
  40.    --  Precondition 
  41.    --      The specified QoS policies must be consistent or the operation will fail and no DDS.DomainParticipant will be created. 
  42.    -- 
  43.    --  If you want to create multiple participants on a given host in the same domain, 
  44.    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy). 
  45.    --  This in turn will ensure each participant uses a different port number 
  46.    --  (since the unicast port numbers are calculated from the participant index and the domain ID). 
  47.    -- 
  48.    --  Note that if there is a single participant per host in a given domain, 
  49.    --  the participant index can be left at the default value (-1). 
  50.  
  51.    --  <dref>DomainParticipantFactory_create_participant</dref> 
  52.  
  53.    function Create_Participant_With_Profile 
  54.      (Self         : not null access Ref; 
  55.       Domain_Id    : in DDS.DomainId_T := Default_Domain; 
  56.       Library_Name : in DDS.String; 
  57.       Profile_Name : in DDS.String; 
  58.       A_Listener   : in DDS.DomainParticipantListener.Ref_Access := null; 
  59.       Mask         : in DDS.StatusMask := DDS.STATUS_MASK_NONE) 
  60.       return DDS.DomainParticipant.Ref_Access; 
  61.    function Create_Participant_With_Profile 
  62.      (Self         : not null access Ref; 
  63.       Domain_Id    : in DDS.DomainId_T := Default_Domain; 
  64.       Library_Name : in Standard.String; 
  65.       Profile_Name : in Standard.String; 
  66.       A_Listener   : in DDS.DomainParticipantListener.Ref_Access := null; 
  67.       Mask         : in DDS.StatusMask := DDS.STATUS_MASK_NONE) 
  68.       return DDS.DomainParticipant.Ref_Access; 
  69.    --  <dref>DomainParticipantFactory_create_participant_with_profile</dref> 
  70.    --  Precondition 
  71.    --      The DDS.DomainParticipantQos in the input profile must be consistent, 
  72.    --      or the operation will fail and no DDS.DomainParticipant will be created. 
  73.    -- 
  74.    --  If you want to create multiple participants on a given host in the same domain, 
  75.    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy). 
  76.    --  This in turn will ensure each participant uses a different port number 
  77.    --  (since the unicast port numbers are calculated from the participant index and the domain ID). 
  78.    -- 
  79.    --  Note that if there is a single participant per host in a given domain, 
  80.    --   the participant index can be left at the default value (-1). 
  81.    -- 
  82.    --  MT Safety: 
  83.    --      Safe. 
  84.    -- 
  85.    --  Returns 
  86.    --      domain participant or NULL on failure 
  87.  
  88.    function  Get_Or_Create_Participant 
  89.      (Self       : not null access Ref; 
  90.       Domain_Id  : in DDS.DomainId_T := Default_Domain; 
  91.       Qos        : in DDS.DomainParticipantQos := DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT; 
  92.       A_Listener : in DDS.DomainParticipantListener.Ref_Access := null; 
  93.       Mask       : in DDS.StatusMask := STATUS_MASK_NONE) return DDS.DomainParticipant.Ref_Access; 
  94.  
  95.    function  Get_Or_Create_Participant_With_Profile 
  96.      (Self         : not null access Ref; 
  97.       Domain_Id    : in DDS.DomainId_T := Default_Domain; 
  98.       Library_Name : in DDS.String; 
  99.       Profile_Name : in DDS.String; 
  100.       A_Listener   : in DDS.DomainParticipantListener.Ref_Access := null; 
  101.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) return  DDS.DomainParticipant.Ref_Access; 
  102.    --  Precondition 
  103.    --      The DDS.DomainParticipantQos in the input profile must be consistent, 
  104.    --      or the operation will fail and no DDS.DomainParticipant will be created. 
  105.    -- 
  106.    --  If you want to create multiple participants on a given host in the same domain, 
  107.    --  make sure each one has a different participant index (set in the DDS.WireProtocolQosPolicy). 
  108.    --  This in turn will ensure each participant uses a different port number 
  109.    --  (since the unicast port numbers are calculated from the participant index and the domain ID). 
  110.    -- 
  111.    --  Note that if there is a single participant per host in a given domain, 
  112.    --   the participant index can be left at the default value (-1). 
  113.    -- 
  114.    --  MT Safety: 
  115.    --      Safe. 
  116.    -- 
  117.    --  Returns 
  118.    --      domain participant or NULL on failure 
  119.  
  120.    procedure Delete_Participant 
  121.      (Self          : not null access Ref; 
  122.       A_Participant : in out DDS.DomainParticipant.Ref_Access); 
  123.    --  Deletes an existing DDS.DomainParticipant and sets the pointer to null on success. 
  124.    -- 
  125.    --  Precondition 
  126.    --      All domain entities belonging to the participant must have already been deleted. 
  127.    --      Otherwise it fails with the error RETCODE_PRECONDITION_NOT_MET. 
  128.    -- 
  129.    --  Postcondition 
  130.    --      Listener installed on the DDS.DomainParticipant will not be called after this method returns successfully. 
  131.    -- 
  132.    --  MT Safety: 
  133.    --      UNSAFE. It is not safe to delete an entity while another thread may be simultaneously calling an API that uses the entity. 
  134.    -- 
  135.    -- 
  136.    --  Exceptions 
  137.    --      DDS_PRECONDITION_NOT_MET. 
  138.    --  <dref>DomainParticipantFactory_delete_participant</dref> 
  139.  
  140.  
  141.    function Lookup_Participant 
  142.      (Self      : not null access Ref; 
  143.       Domain_Id : in DDS.DomainId_T) 
  144.       return DDS.DomainParticipant.Ref_Access; 
  145.    --  Locates an existing DDS.DomainParticipant. 
  146.    -- 
  147.    --  If no such DDS.DomainParticipant exists, the operation will return NULL value. 
  148.    -- 
  149.    --  If multiple DDS.DomainParticipant entities belonging to that domainId exist, 
  150.    --  then the operation will return one of them. It is not specified which one. 
  151.    -- 
  152.    --  Returns 
  153.    --      domain participant if it exists, or NULL 
  154.  
  155.    --  <dref>DomainParticipantFactory_lookup_participant</dref> 
  156.  
  157.  
  158.    procedure Set_Default_Participant_Qos 
  159.      (Self : not null access Ref; 
  160.       Qos  : in DDS.DomainParticipantQos); 
  161.    --  Sets the default DDS.DomainParticipantQos values for this domain participant factory. 
  162.    -- 
  163.    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies. 
  164.  
  165.    --  <dref>DomainParticipantFactory_set_default_participant_qos</dref> 
  166.  
  167.    procedure Set_Default_Participant_Qos_with_Profile 
  168.      (Self         : not null access Ref; 
  169.       libraryName  : in DDS.String; 
  170.       Profile_Name : in DDS.String); 
  171.    --     Sets the default DDS.DomainParticipantQos values for this domain participant factory based on the input XML QoS profile. 
  172.    -- 
  173.    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies. 
  174.    -- 
  175.    --  This default value will be used for newly created DDS.DomainParticipant 
  176.    --  if DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT is specified as the 
  177.    --  qos parameter when DDS.DomainParticipantFactory.create_participant is called. 
  178.  
  179.    --  <dref>DomainParticipantFactory_set_default_participant_qos_with_profile</dref> 
  180.  
  181.    procedure Get_Default_Participant_Qos 
  182.      (Self    : not null access Ref; 
  183.       Qos     : in out DDS.DomainParticipantQos); 
  184.    --  Initializes the QoS instance with default values. 
  185.    -- 
  186.    --  The retrieved qos will match the set of values specified on the last successful call 
  187.    --  to DDS.DomainParticipantFactory.set_default_participant_qos, or 
  188.    --  DDS.DomainParticipantFactory.set_default_participant_qos_with_profile, 
  189.    --  or else, if the call was never made, the default values listed in DDS.DomainParticipantQos. 
  190.    -- 
  191.    --  This method may potentially allocate memory depending on the sequences contained in some QoS policies. 
  192.    -- 
  193.    --  <dref>DomainParticipantFactory_get_default_participant_qos</dref> 
  194.  
  195.  
  196.    procedure Set_Qos 
  197.      (Self : not null access Ref; 
  198.       Qos  : in DDS.DomainParticipantFactoryQos); 
  199.    --  <dref>DomainParticipantFactory_set_qos</dref> 
  200.    --  <internal> 
  201.    --  Sets the value for a participant factory QoS. 
  202.    --  The DDS.DomainParticipantFactoryQos::entity_factory can be changed. The other policies are immutable. 
  203.    --  Note that despite having QoS, the DDS.DomainParticipantFactory is not an DDS.Entity. 
  204.    --  Parameters: 
  205.    --     self <<in>> Cannot be NULL. 
  206.    --     qos  <<in>> Set of policies to be applied to DDS.DomainParticipantFactory. Policies must be consistent. 
  207.    --                 Immutable Policies Can Only Be Changed Before Calling Any Other 
  208.    --                 Data Distribution Service Functions Except for DDS.DomainParticipantFactory_Get_Qos. 
  209.    --  Raises: 
  210.    --     One of the Standard Return Codes, DDS.RETCODE_IMMUTABLE_POLICY if immutable policy is changed, 
  211.    --     or DDS-RETCODE_INCONSISTENT_POLICY if Policies Are Inconsistent 
  212.    --  See also: 
  213.    --     DDS.DomainParticipantFactoryQos for rules on consistency among QoS 
  214.    --  </internal> 
  215.  
  216.    procedure Load_Profiles 
  217.      (Self          : not null access Ref); 
  218.    --  Loads the XML QoS profiles. 
  219.    -- 
  220.    --  The XML QoS profiles are loaded implicitly after the first DDS.DomainParticipant 
  221.    --  is created or explicitly, after a call to this method. 
  222.    -- 
  223.    --  This has the same effect as DDS.DomainParticipantFactory.reload_profiles. 
  224.    --  <dref>DomainParticipantFactory_load_profiles</dref> 
  225.  
  226.    procedure Reload_Profiles 
  227.      (Self          : not null access Ref); 
  228.    --  Reloads the XML QoS profiles. 
  229.    -- 
  230.    --  The XML QoS profiles are loaded implicitly after the first DDS.DomainParticipant 
  231.    --  is created or explicitly, after a call to this method. 
  232.    -- 
  233.    --  This has the same effect as DDS.DomainParticipantFactory.load_profiles. 
  234.    --  <dref>DomainParticipantFactory_reload_profiles</dref> 
  235.  
  236.    procedure Unload_Profiles 
  237.      (Self          : not null access Ref); 
  238.    --  Unloads the XML QoS profiles. 
  239.    -- 
  240.    --  The resources associated with the XML QoS profiles are freed. 
  241.    --  Any reference to the profiles after calling this method will fail with an error. 
  242.    --  <dref>DomainParticipantFactory_unload_profiles</dref> 
  243.  
  244.    procedure Set_Default_Profile 
  245.      (Self          : not null access Ref; 
  246.       Library_Name  : DDS.String; 
  247.       Profile_Name  : DDS.String); 
  248.    --  Sets the default XML profile for a DDS.DomainParticipantFactory. 
  249.    -- 
  250.    --  This method specifies the profile that will be used as the default the next 
  251.    --  time a default DomainParticipantFactory profile is needed during a call 
  252.    --  to a DomainParticipantFactory method. 
  253.    --  When calling a DDS.DomainParticipantFactory method that requires a 
  254.    --  profile_name parameter, you can use null to refer to the default profile. 
  255.    --  (This same information applies to setting a default library.) 
  256.    -- 
  257.    --  This method does not set the default QoS for newly created DomainParticipants; 
  258.    --  for this functionality, use DDS.DomainParticipantFactory.set_default_participant_qos_with_profile 
  259.    --     (you may pass in null after having called set_default_profile()). 
  260.    -- 
  261.    --  Note: if the profile set with this function no longer exists after reloading the QoS profiles 
  262.    --    (for example, by changing DDS.DomainParticipantFactoryQos.profile) the 
  263.    --    default profile will be set to the last one marked with the 
  264.    --    attribute is_default_qos=true or null no such profile exists. 
  265.    --  <dref>DomainParticipantFactory_set_default_profile</dref> 
  266.  
  267.    procedure set_default_library 
  268.      (Self           : not null access Ref; 
  269.       Library_Name   : DDS.String); 
  270.    --  Sets the default XML library for a DDS.DomainParticipantFactory. 
  271.    -- 
  272.    --  Any API requiring a library_name as a parameter can use DDS.Null_String 
  273.    --  to refer to the default library set with this function. 
  274.    -- 
  275.    --  Note: if the library set with this function no longer exists after reloading 
  276.    --  the QoS profiles (for example, by changing DDS.DomainParticipantFactoryQos.profile) 
  277.    --  the default library will be set to the last library containing a profile 
  278.    --  with the attribute is_default_qos=true or null no such library exists. 
  279.    --  <dref>DomainParticipantFactory_set_default_library</dref> 
  280.  
  281.    function get_default_library 
  282.      (Self          : not null access Ref) return DDS.String; 
  283.    --  Gets the default XML library associated with a DDS.DomainParticipantFactory. 
  284.    -- 
  285.    --  @return 
  286.    --    The returned library name is determined as follows: 
  287.    -- 
  288.    --      If it was previously set with DDS.DomainParticipantFactory.set_default_library, 
  289.    --          this function returns that library name 
  290.    --      Otherwise, if one or more profiles have the XML attribute is_default_qos="true", 
  291.    --         this function returns the library where the last one is contained. 
  292.    --      Otherwise, this function returns null. 
  293.  
  294.    --  <dref>DomainParticipantFactory_get_default_library</dref> 
  295.  
  296.    function get_default_Profile 
  297.      (Self          : not null access Ref) return DDS.String; 
  298.    --  Gets the default XML profile associated with a DDS.DomainParticipantFactory. 
  299.    -- 
  300.    --  Returns 
  301.    --    The returned profile name is determined as follows: 
  302.    -- 
  303.    --      If it was previously set with DDS.DomainParticipantFactory.set_default_profile, 
  304.    --          this function returns that profile name 
  305.    --      Otherwise, if one or more profile have the XML attribute is_default_qos="true", 
  306.    --         this function returns the profile where the last one is contained. 
  307.    --      Otherwise, this function returns null. 
  308.    --  <dref>DomainParticipantFactory_get_default_profile</dref> 
  309.  
  310.    function get_default_profile_library 
  311.      (Self          : not null access Ref) return DDS.String; 
  312.    -- 
  313.    --  Gets the library where the default XML profile is contained for a DDS.DomainParticipantFactory. 
  314.    -- 
  315.    --  The default profile library is automatically set when DDS.DomainParticipantFactory.set_default_profile is called. 
  316.    -- 
  317.    --  This library can be different than the DDS.DomainParticipantFactory default library 
  318.    --  <dref>DomainParticipantFactory_get_default_profile_library</dref> 
  319.  
  320.  
  321.    procedure get_qos_profile_libraries 
  322.      (Self   : not null access Ref; 
  323.       libSeq : not null access DDS.String_Seq.Sequence); 
  324.    function get_qos_profile_libraries 
  325.      (Self   : not null access Ref) return DDS.String_Seq.Sequence; 
  326.    --  Gets the names of all XML QoS profile libraries associated with the DDS.DomainParticipantFactory 
  327.    --  <dref>DomainParticipantFactory_get_qos_profile_libraries</dref> 
  328.  
  329.    procedure get_qos_profiles 
  330.      (Self    : not null access Ref; 
  331.       profSeq : not null access DDS.String_Seq.Sequence; 
  332.       libName : in DDS.String); 
  333.    function get_qos_profiles 
  334.      (Self    : not null access Ref; 
  335.       libName : in DDS.String) return DDS.String_Seq.Sequence; 
  336.    --  Gets the names of all XML QoS profiles associated with the input XML QoS profile library. 
  337.    --  <dref>DomainParticipantFactory_get_qos_profiles</dref> 
  338.  
  339.    ----------------------------------------------------------- 
  340.  
  341.    procedure Get_Participant_Qos_From_Profile 
  342.      (Self          : not null access Ref; 
  343.       QoS           : in out DDS.DomainParticipantQos; 
  344.       Library_Name  : DDS.String; 
  345.       Profile_Name  : DDS.String); 
  346. --  Gets the DDSDomainParticipantQos values associated with the input XML QoS profile. 
  347. -- 
  348. -- 
  349. --      qos           Qos to be filled up.. 
  350. --      library_name  Library name containing the XML QoS profile. 
  351. --                      If library_name is null RTI Connext will use the 
  352. --                      default library (see DDS.DomainParticipantFactory.set_default_library). 
  353. --      profile_name  XML QoS Profile name. If profile_name is null 
  354. --                      RTI Connext will use the default profile (see DDS.DomainParticipantFactory.set_default_profile). 
  355. -- 
  356. --  If the input profile cannot be found, the method fails with DDS.RETCODE_ERROR. 
  357.  
  358.    --  <dref>DomainParticipantFactory_get_participant_qos_from_profile</dref> 
  359.  
  360.    ------------------------------------------------------ 
  361.  
  362.    procedure Get_Publisher_Qos_From_Profile 
  363.      (Self          : not null access Ref; 
  364.       QoS           : in out DDS.PublisherQos; 
  365.       Library_Name  : DDS.String; 
  366.       Profile_Name  : DDS.String); 
  367.    --  Gets the DDS.PublisherQos values associated with the input XML QoS profile. 
  368.    --  <dref>DomainParticipantFactory_get_publisher_qos_from_profile</dref> 
  369.  
  370.    ------------------------------------------------------ 
  371.  
  372.    procedure Get_Subscriber_Qos_From_Profile 
  373.      (Self          : not null access Ref; 
  374.       QoS           : in out DDS.SubscriberQos; 
  375.       Library_Name  : DDS.String; 
  376.       Profile_Name  : DDS.String); 
  377.    --  Gets the DDS.SubscriberQos values associated with the input XML QoS profile. 
  378.    --  <dref>DomainParticipantFactory_get_subscriber_qos_from_profile</dref> 
  379.  
  380.  
  381.    ------------------------------------------------------ 
  382.  
  383.    procedure get_datareader_qos_from_profile 
  384.      (Self          : not null access Ref; 
  385.       QoS           : in out DDS.DataReaderQoS; 
  386.       Library_Name  : DDS.String; 
  387.       Profile_Name  : DDS.String); 
  388.    --  Gets the DDS.DataReaderQoS values associated with the input XML QoS profile. 
  389.    --  <dref>DomainParticipantFactory_get_datareader_qos_from_profile</dref> 
  390.  
  391.  
  392.    ------------------------------------------------------ 
  393.  
  394.    procedure get_datareader_qos_from_profile_w_topic_name 
  395.      (Self          : not null access Ref; 
  396.       QoS           : in out DDS.DataReaderQoS; 
  397.       Library_Name  : DDS.String; 
  398.       Profile_Name  : DDS.String; 
  399.       topic_name    : DDS.String); 
  400.    --  Gets the DDS.DataReaderQoS values associated with the input XML QoS profile while applying topic filters to the input topic name. 
  401.    --  <dref>DomainParticipantFactory_get_datareader_qos_from_profile_w_topic_name</dref> 
  402.  
  403.  
  404.    ------------------------------------------------------ 
  405.  
  406.    procedure get_datawriter_qos_from_profile 
  407.      (Self          : not null access Ref; 
  408.       QoS           : in out DDS.DataWriterQos; 
  409.       Library_Name  : DDS.String; 
  410.       Profile_Name  : DDS.String); 
  411.    --  Gets the DDS.DataWriterQos values associated with the input XML QoS profile. 
  412.    --  <dref>DomainParticipantFactory_get_datawriter_qos_from_profile</dref> 
  413.  
  414.    ------------------------------------------------------ 
  415.  
  416.    procedure get_datawriter_qos_from_profile_w_topic_name 
  417.      (Self          : not null access Ref; 
  418.       QoS           : in out DDS.DataWriterQos; 
  419.       Library_Name  : DDS.String; 
  420.       Profile_Name  : DDS.String; 
  421.       topic_name    : DDS.String); 
  422.    --  Gets the DDS.DataWriterQos values associated with the input XML QoS profile while applying topic filters to the input topic name. 
  423.    --  <dref>DomainParticipantFactory_get_datawriter_qos_from_profile_w_topic_name</dref> 
  424.  
  425.  
  426.    ------------------------------------------------------ 
  427.  
  428.    procedure get_topic_qos_from_profile 
  429.      (Self          : not null access Ref; 
  430.       QoS           : in out DDS.TopicQos; 
  431.       Library_Name  : DDS.String; 
  432.       Profile_Name  : DDS.String); 
  433.    --  Gets the DDS.TopicQos values associated with the input XML QoS profile. 
  434.    --  <dref>DomainParticipantFactory_get_topic_qos_from_profile</dref> 
  435.  
  436.    ------------------------------------------------------ 
  437.  
  438.    procedure Get_Topic_Qos_From_Profile_W_Topic_Name 
  439.      (Self          : not null access Ref; 
  440.       QoS           : in out DDS.TopicQos; 
  441.       Library_Name  : DDS.String; 
  442.       Profile_Name  : DDS.String; 
  443.       topic_name    : DDS.String); 
  444.    --  Gets the DDS.TopicQos values associated with the input XML QoS profile while applying topic filters to the input topic name. 
  445.    --  <dref>DomainParticipantFactory_get_topic_qos_from_profile_w_topic_name</dref> 
  446.  
  447.    procedure Get_Qos 
  448.      (Self    : not null access Ref; 
  449.       Qos     : in out DDS.DomainParticipantFactoryQos); 
  450.    --  Gets the value for participant factory QoS. 
  451.    --  <dref>DomainParticipantFactory_get_qos</dref> 
  452.  
  453.    procedure Finalize_Instance (Self : in out Ref_Access); 
  454.    --  <dref>DomainParticipantFactory_finalize_instance</dref> 
  455.  
  456.    procedure Unregister_Thread (Self : not null access Ref); 
  457.    --  <dref>DomainParticipantFactory_unregister_thread</dref> 
  458.  
  459.    type DDS_DomainParticipantFactory_Access is access all RTIDDS.Low_Level.ndds_dds_c_dds_c_domain_h.DDS_DomainParticipantFactory with Storage_Size => 0; 
  460.  
  461.    function GetInterface (Self : not null access Ref) return DDS_DomainParticipantFactory_Access; 
  462.    procedure SetInterface (Self : not null access Ref; To : DDS_DomainParticipantFactory_Access); 
  463. private 
  464.  
  465.    type Ref is new RTIDDS.Obj_Impl.Ref with null record; 
  466.  
  467.    protected Initializeer is 
  468.       procedure Initialize; 
  469.    end Initializeer; 
  470.  
  471.    procedure On_Thread_Started_Callback 
  472.      (OnStartedParam : System.Address; 
  473.       Worker         : access RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h.REDAWorker); 
  474.    pragma Convention (C, On_Thread_Started_Callback); 
  475.    procedure On_Thread_Stopped_Callback 
  476.      (OnStartedParam : System.Address; 
  477.       Worker         : access RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h.REDAWorker); 
  478.    pragma Convention (C, On_Thread_Stopped_Callback); 
  479.  
  480. end DDS.DomainParticipantFactory;