-- (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.
pragma Ada_05;
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;
-- <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>
procedure WriteI
(Self : not null access Ref;
Instance_Data : in System.Address;
Handle : in DDS.InstanceHandle_T_Access;
MetpImpl : DDS.MetpTypeSupport.Unsupported'Class) is abstract;
procedure Get_LoanI
(Self : not null access Ref;
Loan_Ret : out System.Address;
Initialize_Data : out Standard.Boolean;
MetpImpl : DDS.MetpTypeSupport.Unsupported'Class) is abstract;
procedure Discard_LoanI
(Self : not null access Ref;
Sample : System.Address;
MetpImpl : DDS.MetpTypeSupport.Unsupported'Class) is abstract;
end DDS.DataWriter;