OpenDDS::DCPS::PublisherImpl Class Reference

Implements the OpenDDS::DCPS::Publisher interfaces. More...

#include <PublisherImpl.h>

Inheritance diagram for OpenDDS::DCPS::PublisherImpl:

Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::PublisherImpl:

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::map< PublicationId,
DataSampleList
DataSampleListMap

Public Member Functions

 PublisherImpl (const ::DDS::PublisherQos &qos,::DDS::PublisherListener_ptr a_listener, DomainParticipantImpl *participant)
 Constructor.
virtual ~PublisherImpl (void)
 Destructor.
virtual ::DDS::DataWriter_ptr create_datawriter (::DDS::Topic_ptr a_topic, const ::DDS::DataWriterQos &qos,::DDS::DataWriterListener_ptr a_listener) throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t delete_datawriter (::DDS::DataWriter_ptr a_datawriter) throw ( CORBA::SystemException )
virtual ::DDS::DataWriter_ptr lookup_datawriter (const char *topic_name) throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t delete_contained_entities () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t set_qos (const ::DDS::PublisherQos &qos) throw ( CORBA::SystemException )
virtual void get_qos (::DDS::PublisherQos &qos) throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t set_listener (::DDS::PublisherListener_ptr a_listener,::DDS::StatusKindMask mask) throw ( CORBA::SystemException )
virtual ::DDS::PublisherListener_ptr get_listener () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t suspend_publications () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t resume_publications () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t begin_coherent_changes () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t end_coherent_changes () throw ( CORBA::SystemException )
virtual ::DDS::DomainParticipant_ptr get_participant () throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t set_default_datawriter_qos (const ::DDS::DataWriterQos &qos) throw ( CORBA::SystemException )
virtual void get_default_datawriter_qos (::DDS::DataWriterQos &qos) throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t copy_from_topic_qos (::DDS::DataWriterQos &a_datawriter_qos, const ::DDS::TopicQos &a_topic_qos) throw ( CORBA::SystemException )
virtual ::DDS::ReturnCode_t enable () throw ( CORBA::SystemException )
ACE_INLINE ACE_Recursive_Thread_Mutex & get_pi_lock ()
int is_clean () const
::DDS::ReturnCode_t writer_enabled (::OpenDDS::DCPS::DataWriterRemote_ptr remote_writer,::DDS::DataWriter_ptr local_writer, const char *topic_name, RepoId topic_id)
void add_associations (const ReaderAssociationSeq &readers, DataWriterImpl *writer, const ::DDS::DataWriterQos writer_qos)
void remove_associations (const ReaderIdSeq &readers, const RepoId &writer)
::DDS::ReturnCode_t data_available (DataWriterImpl *writer, bool resend=false)
::DDS::PublisherListenerlistener_for (::DDS::StatusKind kind)

Private Attributes

::DDS::PublisherQos qos_
 Publisher QoS policy list.
::DDS::DataWriterQos default_datawriter_qos_
 Default datawriter Qos policy list.
::DDS::StatusKindMask listener_mask_
::DDS::PublisherListener_var listener_
 Used to notify the entity for relevant events.
::DDS::PublisherListenerfast_listener_
 The publisher listener servant.
DataWriterMap datawriter_map_
 This map is used to support datawriter lookup by topic name.
PublicationMap publication_map_
CoherencyGroup group_id_
 Next coherency group ID to use. - NOT USED IN FIRST IMPL.
std::list< CoherencyGroupactive_coherency_
 Ordered list of active coherency groups. - NOT USED IN FIRST IMPL.
::DDS::DomainId_t domain_id_
 Domain in which we are contained.
DomainParticipantImplparticipant_
 The DomainParticipant servant that owns this Publisher.
CORBA::Short suspend_depth_count_
 The suspend depth count.
SequenceNumber sequence_number_
ACE_Time_Value aggregation_period_start_
 Start of current aggregation period. - NOT USED IN FIRST IMPL.
ACE_Recursive_Thread_Mutex pi_lock_
DataSampleList available_data_list_
 The catched available data while suspending.

Detailed Description

Implements the OpenDDS::DCPS::Publisher interfaces.

This class acts as a factory and container of the datawriter. It is also an intermedia class which delegates the data from datawriter to transport for sending.

See the DDS specification, OMG formal/04-12-02, for a description of the interface this class is implementing.


Member Typedef Documentation

typedef std::map<PublicationId, DataSampleList> OpenDDS::DCPS::PublisherImpl::DataSampleListMap


Constructor & Destructor Documentation

OpenDDS::DCPS::PublisherImpl::PublisherImpl ( const ::DDS::PublisherQos qos,
::DDS::PublisherListener_ptr  a_listener,
DomainParticipantImpl participant 
)

Constructor.

OpenDDS::DCPS::PublisherImpl::~PublisherImpl ( void   )  [virtual]

Destructor.


Member Function Documentation

void OpenDDS::DCPS::PublisherImpl::add_associations ( const ReaderAssociationSeq readers,
DataWriterImpl writer,
const ::DDS::DataWriterQos  writer_qos 
)

This method is called by datawriter to tell transport to add new subscriptions with the datawriter.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::begin_coherent_changes (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::copy_from_topic_qos ( ::DDS::DataWriterQos a_datawriter_qos,
const ::DDS::TopicQos a_topic_qos 
) throw ( CORBA::SystemException )

DDS::DataWriter_ptr OpenDDS::DCPS::PublisherImpl::create_datawriter ( ::DDS::Topic_ptr  a_topic,
const ::DDS::DataWriterQos qos,
::DDS::DataWriterListener_ptr  a_listener 
) throw ( CORBA::SystemException )

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::data_available ( DataWriterImpl writer,
bool  resend = false 
)

This is called by datawriter to notify the publisher to collect the available data from the datawriter for sending.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::delete_contained_entities (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::delete_datawriter ( ::DDS::DataWriter_ptr  a_datawriter  )  throw ( CORBA::SystemException )

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::enable (  )  throw ( CORBA::SystemException )

Implements DDS::Entity.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::end_coherent_changes (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

void OpenDDS::DCPS::PublisherImpl::get_default_datawriter_qos ( ::DDS::DataWriterQos qos  )  throw ( CORBA::SystemException ) [virtual]

DDS::PublisherListener_ptr OpenDDS::DCPS::PublisherImpl::get_listener (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

DDS::DomainParticipant_ptr OpenDDS::DCPS::PublisherImpl::get_participant (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

ACE_INLINE ACE_Recursive_Thread_Mutex& OpenDDS::DCPS::PublisherImpl::get_pi_lock (  )  [inline]

void OpenDDS::DCPS::PublisherImpl::get_qos ( ::DDS::PublisherQos qos  )  throw ( CORBA::SystemException ) [virtual]

int OpenDDS::DCPS::PublisherImpl::is_clean (  )  const

This method is not defined in the IDL and is defined for internal use. Check if there is any datawriter associated with this publisher.

DDS::PublisherListener * OpenDDS::DCPS::PublisherImpl::listener_for ( ::DDS::StatusKind  kind  ) 

This is used to retrieve the listener for a certain status change. If this publisher has a registered listener and the status kind is in the listener mask then the listener is returned. Otherwise, the query for listener is propagated up to the factory/DomainParticipant.

DDS::DataWriter_ptr OpenDDS::DCPS::PublisherImpl::lookup_datawriter ( const char *  topic_name  )  throw ( CORBA::SystemException )

void OpenDDS::DCPS::PublisherImpl::remove_associations ( const ReaderIdSeq readers,
const RepoId writer 
)

This method is called by datawriter to tell transport to remove subscriptions with the datawriter.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::resume_publications (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::set_default_datawriter_qos ( const ::DDS::DataWriterQos qos  )  throw ( CORBA::SystemException )

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::set_listener ( ::DDS::PublisherListener_ptr  a_listener,
::DDS::StatusKindMask  mask 
) throw ( CORBA::SystemException )

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::set_qos ( const ::DDS::PublisherQos qos  )  throw ( CORBA::SystemException )

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::suspend_publications (  )  throw ( CORBA::SystemException )

Implements DDS::Publisher.

DDS::ReturnCode_t OpenDDS::DCPS::PublisherImpl::writer_enabled ( ::OpenDDS::DCPS::DataWriterRemote_ptr  remote_writer,
::DDS::DataWriter_ptr  local_writer,
const char *  topic_name,
RepoId  topic_id 
)

This method is called when the datawriter created by this publisher was enabled. It will notify the DCPSInfo that a new datawriter/publication is associated with the topic.

Load the publication into the repository and get the publication_id_ in return.


Member Data Documentation

std::list<CoherencyGroup> OpenDDS::DCPS::PublisherImpl::active_coherency_ [private]

Ordered list of active coherency groups. - NOT USED IN FIRST IMPL.

ACE_Time_Value OpenDDS::DCPS::PublisherImpl::aggregation_period_start_ [private]

Start of current aggregation period. - NOT USED IN FIRST IMPL.

DataSampleList OpenDDS::DCPS::PublisherImpl::available_data_list_ [private]

The catched available data while suspending.

DataWriterMap OpenDDS::DCPS::PublisherImpl::datawriter_map_ [private]

This map is used to support datawriter lookup by topic name.

::DDS::DataWriterQos OpenDDS::DCPS::PublisherImpl::default_datawriter_qos_ [private]

Default datawriter Qos policy list.

::DDS::DomainId_t OpenDDS::DCPS::PublisherImpl::domain_id_ [private]

Domain in which we are contained.

::DDS::PublisherListener* OpenDDS::DCPS::PublisherImpl::fast_listener_ [private]

The publisher listener servant.

CoherencyGroup OpenDDS::DCPS::PublisherImpl::group_id_ [private]

Next coherency group ID to use. - NOT USED IN FIRST IMPL.

::DDS::PublisherListener_var OpenDDS::DCPS::PublisherImpl::listener_ [private]

Used to notify the entity for relevant events.

::DDS::StatusKindMask OpenDDS::DCPS::PublisherImpl::listener_mask_ [private]

The StatusKind bit mask indicates which status condition change can be notified by the listener of this entity.

DomainParticipantImpl* OpenDDS::DCPS::PublisherImpl::participant_ [private]

The DomainParticipant servant that owns this Publisher.

ACE_Recursive_Thread_Mutex OpenDDS::DCPS::PublisherImpl::pi_lock_ [mutable, private]

The recursive lock to protect datawriter map and suspend count. It also projects the TransportInterface (it must be held when calling any TransportInterface method).

PublicationMap OpenDDS::DCPS::PublisherImpl::publication_map_ [private]

This map is used to support datawriter lookup by datawriter repository id.

::DDS::PublisherQos OpenDDS::DCPS::PublisherImpl::qos_ [private]

Publisher QoS policy list.

SequenceNumber OpenDDS::DCPS::PublisherImpl::sequence_number_ [private]

Unique sequence number used when the scope_access = GROUP.

CORBA::Short OpenDDS::DCPS::PublisherImpl::suspend_depth_count_ [private]

The suspend depth count.


The documentation for this class was generated from the following files:
Generated on Fri Nov 7 09:37:37 2008 for OpenDDS by  doxygen 1.4.7