--  (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. limited with DDS.Publisher;
with DDS.Topic; with DDS.DataWriterListener; with DDS.Domain_Entity; with DDS.MetpTypeSupport; with System; --  <dref>DataWriter</dref> package DDS.DataWriter is
--  Detailed Description --  <<interface>> Allows an application to set the value of the --   data to be published under a given DDS.Topic. -- --  A DDS.DataWriter is attached to exactly one DDS.Publisher, --  that acts as a factory for it. -- --  A DDS.DataWriter is bound to exactly one DDS.Topic and therefore to exactly --  one data type. --  The DDS.Topic must exist prior to the DDS.DataWriter's creation. -- --  DDS.DataWriter is an abstract class. --  It must be specialized for each particular application data-type --  (see USER_DATA). The additional methods or functions that must be defined --  in the auto-generated class for a hypothetical application type Foo are --  specified in the example type DDS.DataWriter. -- --  The following operations may be called even if the DDS.DataWriter --  is not enabled. Other operations will fail exeption RETCODE_NOT_ENABLED --  if called on a disabled DDS.DataWriter: -- --      * The base-class operations DDS.DataWriter.set_qos, --                                  DDS.DataWriter.get_qos, --                                  DDS.DataWriter.set_listener, --                                  DDS.DataWriter.get_listener, --                                  DDS.DataWriter.enable, --                                  DDS.DataWriter.get_statuscondition, --                                  DDS.DataWriter.get_status_changes --      * DDS.DataWriter.get_liveliness_lost_status --        DDS.DataWriter.get_offered_deadline_missed_status --        DDS.DataWriter.get_offered_incompatible_qos_status --        DDS.DataWriter.get_publication_matched_status --        DDS.DataWriter.get_reliable_writer_cache_changed_status --        DDS.DataWriter.get_reliable_reader_activity_changed_status -- --  Several DDS.DataWriter may operate in different threads. --  If they share the same DDS.Publisher, the middleware guarantees that --  its operations are thread-safe. -- --  See also: --      DDS.example.FooDataWriter --      Operations Allowed in Listener Callbacks type Ref is limited interface and DDS.Domain_Entity.Ref;
type Ref_Access is access all Ref'Class;
procedure Set_Qos
(Self : not null access Ref;
Qos : in DDS.DataWriterQos) is abstract;
   --  <dref>DataWriter_set_qos</dref> procedure Set_Qos_With_Profile (Self : not null access Ref;
Library_Name : String;
Profile_Name : String) is abstract;
procedure Set_Qos_With_Profile (Self : not null access Ref;
Library_Name : Standard.String;
Profile_Name : Standard.String) is abstract;
   --  <dref>DataWriter_set_qos_with_profile</dref>    --  <internal>    --  Sets the writer QoS.    --  This operation modifies the QoS of the dds.DataWriter.    --  The dds.DataWriterQos.user_data,    --      dds.DataWriterQos.deadline,    --      dds.DataWriterQos.latency_budget,    --      dds.DataWriterQos.ownership_strength,    --      dds.DataWriterQos.transport_priority,    --      dds.DataWriterQos.lifespan and    --      dds.publication.DataWriterQos.writer_data_lifecycle can be changed.    --  The other policies are immutable.    --  See also:    --      dds.DataWriterQos for rules on consistency among QoS    --      set_qos (abstract)    --      Operations Allowed in Listener Callbacks    --  </internal> procedure Get_Qos
(Self : not null access Ref;
Qos : in out DDS.DataWriterQos) is abstract;
   --  <dref>DataWriter_get_qos</dref>    --  <internal>    --  Gets the writer QoS.    --  This method may potentially allocate memory depending on the sequences    --  contained in some QoS policies.    --  </internal> procedure Set_Listener
(Self : not null access Ref;
A_Listener : in DDS.DataWriterListener.Ref_Access;
Mask : in DDS.StatusMask) is abstract;
   --  <dref>DataWriter_set_listener</dref>    --  <internal>    --  Sets the writer listener.    --  </internal> function Get_Listener
(Self : not null access Ref)
return DDS.DataWriterListener.Ref_Access is abstract;
   --  <dref>DataWriter_get_listener</dref>    --  <internal>    --  Get the writer listener.    --  </internal> function Get_Topic
(Self : not null access Ref)
return DDS.Topic.Ref_Access is abstract;
   --  <dref>DataWriter_get_topic</dref>    --  <internal>    --  Get the writer listener.    --  </internal> function Get_Publisher
(Self : not null access Ref)
return access DDS.Publisher.Ref'Class is abstract;
   --  <dref>DataWriter_get_publisher</dref> procedure Wait_For_Acknowledgments
(Self : not null access Ref;
Max_Wait : in DDS.Duration_T) is abstract;
   --  <dref>DataWriter_wait_for_acknowledgments</dref> procedure Wait_For_Asynchronous_Publishing
(Self : not null access Ref;
Max_Wait : in DDS.Duration_T) is abstract;
   --  <dref>DataWriter_wait_for_asynchronous_publishing</dref> procedure Get_Liveliness_Lost_Status
(Self : not null access Ref;
Status : in out DDS.LivelinessLostStatus) is abstract;
   --  <dref>DataWriter_get_liveliness_lost_status</dref>    --  <internal>    --  Returns the StatusKind.LIVELINESS_LOST_STATUS    --  communication status.    --  </internal> procedure Get_Offered_Deadline_Missed_Status
(Self : not null access Ref;
Status : in out DDS.OfferedDeadlineMissedStatus) is abstract;
   --  <dref>DataWriter_get_offered_deadline_missed_status</dref>    --  <internal>    --  Returns the StatusKind.OFFERED_DEADLINE_MISSED_STATUS    --  communication status.    --  </internal> procedure Get_Offered_Incompatible_Qos_Status
(Self : not null access Ref;
Status : in out DDS.OfferedIncompatibleQosStatus) is abstract;
   --  <dref>DataWriter_get_offered_incompatible_qos_status</dref>    --  <internal>    --  Returns the StatusKind.OFFERED_INCOMPATIBLE_QOS_STATUS    --  communication status    --  </internal> procedure Get_Publication_Matched_Status
(Self : not null access Ref;
Status : in out DDS.PublicationMatchedStatus) is abstract;
   --  <dref>DataWriter_get_publication_matched_status</dref>    --  <internal>    --  Returns the StatusKind.PUBLICATION_MATCHED_STATUS    --  communication status.    --  </internal> procedure Assert_Liveliness
(Self : not null access Ref) is abstract;
   --  <dref>DataWriter_assert_liveliness</dref> function Get_Matched_Subscriptions
(Self : not null access Ref)
return DDS.InstanceHandle_Seq.Sequence is abstract;
   --  <dref>DataWriter_get_matched_subscriptions</dref> function Get_Matched_Subscription_Data
(Self : not null access Ref;
Subscription_Handle : in DDS.InstanceHandle_T)
return DDS.SubscriptionBuiltinTopicData is abstract;
   --  <dref>DataWriter_get_matched_subscription_data</dref> function Get_Matched_Subscription_Locators
(Self : not null access Ref)
return DDS.Locator_Seq.Sequence is abstract;
   --  <dref>DataWriter_get_matched_subscription_locators</dref> procedure Get_Reliable_Reader_Activity_Changed_Status
(Self : not null access Ref;
status : in out DDS.ReliableReaderActivityChangedStatus) is abstract;
procedure set_Reliable_Reader_Activity_Changed_Status
(Self : not null access Ref;
status : in DDS.ReliableReaderActivityChangedStatus) is abstract;
   --  <dref>DataWriter_get_reliable_reader_activity_changed_status</dref> procedure Get_Reliable_Writer_Cache_Changed_Status
(Self : not null access Ref;
status : in out DDS.ReliableWriterCacheChangedStatus) is abstract;
   --  <dref>DataWriter_get_reliable_writer_cache_changed_status</dref> procedure Get_DataWriter_Cache_Status
(Self : not null access Ref;
status : in out DDS.DataWriterCacheStatus) is abstract;
   --  <dref>DataWriter_get_datawriter_cache_status</dref> procedure Get_DataWriter_Protocol_Status
(Self : not null access Ref;
status : in out DDS.DataWriterProtocolStatus) is abstract;
   --  <dref>DataWriter_get_datawriter_protocol_status</dref> procedure Get_Matched_Subscription_Datawriter_Protocol_Status
(Self : not null access Ref;
status : in out DDS.DataWriterProtocolStatus;
subscription_handle : DDS.InstanceHandle_T) is abstract;
   --  <dref>DataWriter_get_matched_subscription_datawriter_protocol_status</dref> procedure Get_Matched_Subscription_Datawriter_Protocol_Status_By_Locator
(Self : not null access Ref;
status : in out DDS.DataWriterProtocolStatus;
locator : DDS.Locator_T) is abstract;
   --  <dref>DataWriter_get_matched_subscription_datawriter_protocol_status_by_locator</dref> procedure Flush
(Self : not null access Ref) is abstract;
   --  <dref>DataWriter_flush</dref>    --  -------------------------------------------------------------------------    --   Implementation    --  ------------------------------------------------------------------------- procedure WriteI
(Self : not null access Ref;
Instance_Data : in System.Address;
Handle : in DDS.InstanceHandle_T_Access;
MetpImpl : not null access DDS.MetpTypeSupport.Ref'Class) is abstract;
procedure Get_LoanI
(Self : not null access Ref;
Loan_Ret : out System.Address;
Initialize_Data : out Standard.Boolean;
MetpImpl : not null access DDS.MetpTypeSupport.Ref'Class) is abstract;
procedure Discard_LoanI
(Self : not null access Ref;
Sample : System.Address;
MetpImpl : not null access DDS.MetpTypeSupport.Ref'Class) is abstract;
procedure call_listener (Self : not null access Ref;
mask : StatusMask) is abstract;
procedure set_reliable_writer_cache_changed_status
(Self : not null access Ref;
To : ReliableWriterCacheChangedStatus) is abstract;
procedure set_datawriter_cache_status
(Self : not null access Ref;
To : DataWriterCacheStatus) is abstract;
procedure set_datawriter_protocol_status
(Self : not null access Ref;
To : DataWriterProtocolStatus) is abstract;
procedure set_matched_subscription_datawriter_protocol_status
(Self : not null access Ref;
To : DDS.DataWriterProtocolStatus;
handle : DDS.InstanceHandle_T) is abstract;
procedure set_matched_subscription_datawriter_protocol_status_by_locator
(Self : not null access Ref;
status : DDS.DataWriterProtocolStatus;
locator : DDS.Locator_T) is abstract;
end DDS.DataWriter;