OpenDDS  Snapshot(2023/04/28-20:55)
Public Member Functions | List of all members
OpenDDS::RTPS::Sedp::DiscoveryWriter Class Reference
Inheritance diagram for OpenDDS::RTPS::Sedp::DiscoveryWriter:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::RTPS::Sedp::DiscoveryWriter:
Collaboration graph
[legend]

Public Member Functions

 DiscoveryWriter (const DCPS::GUID_t &pub_id, Sedp &sedp, ACE_INT64 seq_init=1)
 
virtual ~DiscoveryWriter ()
 
DDS::ReturnCode_t write_dcps_participant_secure (const Security::SPDPdiscoveredParticipantData &msg, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
 
DDS::ReturnCode_t write_unregister_dispose (const DCPS::GUID_t &rid, CORBA::UShort pid=PID_ENDPOINT_GUID)
 
- Public Member Functions inherited from OpenDDS::RTPS::Sedp::Writer
 Writer (const DCPS::GUID_t &pub_id, Sedp &sedp, ACE_INT64 seq_init=1)
 
virtual ~Writer ()
 
bool assoc (const DCPS::AssociationData &subscription)
 
void transport_assoc_done (int flags, const DCPS::GUID_t &remote)
 
void data_delivered (const DCPS::DataSampleElement *)
 
void data_dropped (const DCPS::DataSampleElement *, bool by_transport)
 
void data_acked (const GUID_t &remote)
 
void control_delivered (const DCPS::Message_Block_Ptr &sample)
 
void control_dropped (const DCPS::Message_Block_Ptr &sample, bool dropped_by_transport)
 
void notify_publication_disconnected (const DCPS::ReaderIdSeq &)
 
void notify_publication_reconnected (const DCPS::ReaderIdSeq &)
 
void notify_publication_lost (const DCPS::ReaderIdSeq &)
 
void remove_associations (const DCPS::ReaderIdSeq &, bool)
 
void replay_durable_data_for (const DCPS::GUID_t &remote_sub_id)
 
void retrieve_inline_qos_data (InlineQosData &) const
 
const DCPS::SequenceNumberget_seq () const
 
DDS::ReturnCode_t write_parameter_list (const ParameterList &plist, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
 
void end_historic_samples (const DCPS::GUID_t &reader)
 
void request_ack (const DCPS::GUID_t &reader)
 
void send_deferred_samples (const GUID_t &reader)
 
- Public Member Functions inherited from OpenDDS::DCPS::TransportSendListener
virtual ~TransportSendListener ()
 
virtual SendControlStatus send_control_customized (const DataLinkSet_rch &links, const DataSampleHeader &header, ACE_Message_Block *msg, void *extra)
 
virtual void transport_discovery_change ()
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 
- Public Member Functions inherited from OpenDDS::RTPS::Sedp::Endpoint
 Endpoint (const DCPS::GUID_t &repo_id, Sedp &sedp)
 
virtual ~Endpoint ()
 
bool check_transport_qos (const DCPS::TransportInst &)
 
DCPS::GUID_t get_guid () const
 
DDS::DomainId_t domain_id () const
 
CORBA::Long get_priority_value (const DCPS::AssociationData &) const
 
void set_crypto_handles (DDS::Security::ParticipantCryptoHandle p, DDS::Security::NativeCryptoHandle e=DDS::HANDLE_NIL)
 
DDS::Security::ParticipantCryptoHandle get_crypto_handle () const
 
DDS::Security::NativeCryptoHandle get_endpoint_crypto_handle () const
 
void shutting_down ()
 
OPENDDS_STRING get_instance_name (const DCPS::GUID_t &id) const
 
EntityId_t counterpart_entity_id () const
 
GUID_t make_counterpart_guid (const DCPS::GUID_t &remote_part) const
 
bool associated_with_counterpart (const DCPS::GUID_t &remote_part) const
 
bool pending_association_with_counterpart (const DCPS::GUID_t &remote_part) const
 
bool associated_with_counterpart_if_not_pending (const DCPS::GUID_t &remote_part) const
 
RcHandle< DCPS::BitSubscriberget_builtin_subscriber_proxy () const
 
- Public Member Functions inherited from OpenDDS::DCPS::TransportClient
void use_datalink (const GUID_t &remote_id, const DataLink_rch &link)
 
 TransportClient ()
 
virtual ~TransportClient ()
 
void enable_transport (bool reliable, bool durable)
 
void enable_transport_using_config (bool reliable, bool durable, const TransportConfig_rch &tc)
 
bool swap_bytes () const
 
bool cdr_encapsulation () const
 
const TransportLocatorSeqconnection_info () const
 
void populate_connection_info ()
 
bool is_reliable () const
 
bool associate (const AssociationData &peer, bool active)
 
void disassociate (const GUID_t &peerId)
 
void stop_associating ()
 
void stop_associating (const GUID_t *repos, CORBA::ULong length)
 
void send_final_acks ()
 
void transport_stop ()
 
void register_for_reader (const GUID_t &participant, const GUID_t &writerid, const GUID_t &readerid, const TransportLocatorSeq &locators, OpenDDS::DCPS::DiscoveryListener *listener)
 
void unregister_for_reader (const GUID_t &participant, const GUID_t &writerid, const GUID_t &readerid)
 
void register_for_writer (const GUID_t &participant, const GUID_t &readerid, const GUID_t &writerid, const TransportLocatorSeq &locators, DiscoveryListener *listener)
 
void unregister_for_writer (const GUID_t &participant, const GUID_t &readerid, const GUID_t &writerid)
 
void update_locators (const GUID_t &remote, const TransportLocatorSeq &locators)
 
WeakRcHandle< ICE::Endpointget_ice_endpoint ()
 
bool send_response (const GUID_t &peer, const DataSampleHeader &header, Message_Block_Ptr payload)
 
void send (SendStateDataSampleList send_list, ACE_UINT64 transaction_id=0)
 
SendControlStatus send_w_control (SendStateDataSampleList send_list, const DataSampleHeader &header, Message_Block_Ptr msg, const GUID_t &destination)
 
SendControlStatus send_control (const DataSampleHeader &header, Message_Block_Ptr msg)
 
SendControlStatus send_control_to (const DataSampleHeader &header, Message_Block_Ptr msg, const GUID_t &destination)
 
bool remove_sample (const DataSampleElement *sample)
 
bool remove_all_msgs ()
 
virtual void add_link (const DataLink_rch &link, const GUID_t &peer)
 
void terminate_send_if_suspended ()
 
bool associated_with (const GUID_t &remote) const
 
bool pending_association_with (const GUID_t &remote) const
 
GUID_t repo_id () const
 
void data_acked (const GUID_t &remote)
 
bool is_leading (const GUID_t &reader_id) const
 

Additional Inherited Members

- Public Types inherited from OpenDDS::DCPS::TransportClient
enum  { ASSOC_OK = 1, ASSOC_ACTIVE = 2 }
 
- Protected Member Functions inherited from OpenDDS::RTPS::Sedp::Writer
typedef OPENDDS_MAP (DCPS::SequenceNumber, DCPS::DataSampleElement *) PerReaderDeferredSamples
 
typedef OPENDDS_MAP (GUID_t, PerReaderDeferredSamples) DeferredSamples
 
void send_sample (DCPS::Message_Block_Ptr payload, size_t size, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence, bool historic=false)
 
void send_sample_i (DCPS::DataSampleElement *el)
 
void set_header_fields (DCPS::DataSampleHeader &dsh, size_t size, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence, bool historic_sample=false, DCPS::MessageId id=DCPS::SAMPLE_DATA)
 
void write_control_msg (DCPS::Message_Block_Ptr payload, size_t size, DCPS::MessageId id, DCPS::SequenceNumber seq=DCPS::SequenceNumber())
 
virtual bool deferrable () const
 
- Protected Member Functions inherited from OpenDDS::DCPS::TransportSendListener
 TransportSendListener ()
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 
- Protected Member Functions inherited from OpenDDS::DCPS::TransportClient
void cdr_encapsulation (bool encap)
 
- Protected Attributes inherited from OpenDDS::RTPS::Sedp::Writer
DeferredSamples deferred_samples_
 
DCPS::SequenceNumber seq_
 
- Protected Attributes inherited from OpenDDS::RTPS::Sedp::Endpoint
DCPS::GUID_t repo_id_
 
Sedpsedp_
 
AtomicBool shutting_down_
 
DDS::Security::ParticipantCryptoHandle participant_crypto_handle_
 
DDS::Security::NativeCryptoHandle endpoint_crypto_handle_
 

Detailed Description

Definition at line 545 of file Sedp.h.

Constructor & Destructor Documentation

◆ DiscoveryWriter()

OpenDDS::RTPS::Sedp::DiscoveryWriter::DiscoveryWriter ( const DCPS::GUID_t pub_id,
Sedp sedp,
ACE_INT64  seq_init = 1 
)
inline

Definition at line 547 of file Sedp.h.

References OpenDDS::RTPS::PID_ENDPOINT_GUID, and OpenDDS::RTPS::Sedp::write_dcps_participant_secure().

548  : Writer(pub_id, sedp, seq_init)
549  {}
Writer(const DCPS::GUID_t &pub_id, Sedp &sedp, ACE_INT64 seq_init=1)
Definition: Sedp.cpp:3180

◆ ~DiscoveryWriter()

OpenDDS::RTPS::Sedp::DiscoveryWriter::~DiscoveryWriter ( )
virtual

Definition at line 3603 of file Sedp.cpp.

3604 {
3605 }

Member Function Documentation

◆ write_dcps_participant_secure()

DDS::ReturnCode_t OpenDDS::RTPS::Sedp::DiscoveryWriter::write_dcps_participant_secure ( const Security::SPDPdiscoveredParticipantData msg,
const DCPS::GUID_t reader,
DCPS::SequenceNumber sequence 
)

Definition at line 3433 of file Sedp.cpp.

References ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::TransportClient::get_ice_endpoint(), OpenDDS::RTPS::Spdp::get_ice_endpoint_if_added(), OpenDDS::RTPS::Sedp::ice_agent_, LM_ERROR, DDS::RETCODE_ERROR, OpenDDS::RTPS::Sedp::Endpoint::sedp_, OpenDDS::RTPS::SEDP_AGENT_INFO_KEY, OpenDDS::RTPS::Sedp::spdp_, OpenDDS::RTPS::SPDP_AGENT_INFO_KEY, OpenDDS::RTPS::ParameterListConverter::to_param_list(), and OpenDDS::RTPS::Sedp::Writer::write_parameter_list().

3435 {
3436  ParameterList plist;
3437 
3438  if (!ParameterListConverter::to_param_list(msg, plist)) {
3439  ACE_ERROR((LM_ERROR,
3440  ACE_TEXT("(%P|%t) ERROR: Sedp::DiscoveryWriter::write_dcps_participant_secure - ")
3441  ACE_TEXT("Failed to convert SPDPdiscoveredParticipantData ")
3442  ACE_TEXT("to ParameterList\n")));
3443 
3444  return DDS::RETCODE_ERROR;
3445  }
3446 
3447  ICE::AgentInfoMap ai_map;
3448  DCPS::WeakRcHandle<ICE::Endpoint> sedp_endpoint = get_ice_endpoint();
3449  if (sedp_endpoint) {
3450  ai_map[SEDP_AGENT_INFO_KEY] = sedp_.ice_agent_->get_local_agent_info(sedp_endpoint);
3451  }
3452  DCPS::WeakRcHandle<ICE::Endpoint> spdp_endpoint = sedp_.spdp_.get_ice_endpoint_if_added();
3453  if (spdp_endpoint) {
3454  ai_map[SPDP_AGENT_INFO_KEY] = sedp_.ice_agent_->get_local_agent_info(spdp_endpoint);
3455  }
3456  if (!ParameterListConverter::to_param_list(ai_map, plist)) {
3457  ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: ")
3458  ACE_TEXT("Sedp::DiscoveryWriter::write_dcps_participant_secure - ")
3459  ACE_TEXT("failed to convert from ICE::AgentInfo ")
3460  ACE_TEXT("to ParameterList\n")));
3461  return DDS::RETCODE_ERROR;
3462  }
3463 
3464  return write_parameter_list(plist, reader, sequence);
3465 }
#define ACE_ERROR(X)
const char SEDP_AGENT_INFO_KEY[]
Definition: Spdp.h:57
DCPS::WeakRcHandle< ICE::Endpoint > get_ice_endpoint_if_added()
Definition: Spdp.cpp:612
sequence< Parameter > ParameterList
ACE_TEXT("TCP_Factory")
WeakRcHandle< ICE::Endpoint > get_ice_endpoint()
const char SPDP_AGENT_INFO_KEY[]
Definition: Spdp.h:56
const ReturnCode_t RETCODE_ERROR
DCPS::RcHandle< ICE::Agent > ice_agent_
Definition: Sedp.h:1321
bool to_param_list(const DDS::ParticipantBuiltinTopicData &pbtd, ParameterList &param_list)
DDS::ReturnCode_t write_parameter_list(const ParameterList &plist, const DCPS::GUID_t &reader, DCPS::SequenceNumber &sequence)
Definition: Sedp.cpp:3308

◆ write_unregister_dispose()

DDS::ReturnCode_t OpenDDS::RTPS::Sedp::DiscoveryWriter::write_unregister_dispose ( const DCPS::GUID_t rid,
CORBA::UShort  pid = PID_ENDPOINT_GUID 
)

Definition at line 3469 of file Sedp.cpp.

References ACE_ERROR, ACE_TEXT(), ACE_Message_Block::cont(), OpenDDS::DCPS::DISPOSE_UNREGISTER_INSTANCE, OpenDDS::DCPS::DataSampleHeader::get_max_serialized_size(), OpenDDS::RTPS::Parameter::guid, LM_ERROR, ACE_Message_Block::MB_DATA, OpenDDS::DCPS::move(), OpenDDS::DCPS::MUTABLE, OpenDDS::DCPS::primitive_serialized_size_ulong(), DDS::RETCODE_ERROR, DDS::RETCODE_OK, OpenDDS::DCPS::serialized_size(), and OpenDDS::RTPS::Sedp::Writer::write_control_msg().

3470 {
3471  // Build param list for message
3472  Parameter param;
3473  param.guid(rid);
3474  param._d(pid);
3475  ParameterList plist;
3476  plist.length(1);
3477  plist[0] = param;
3478 
3479  // Determine message length
3480  size_t size = 0;
3481  DCPS::primitive_serialized_size_ulong(sedp_encoding, size);
3482  DCPS::serialized_size(sedp_encoding, size, plist);
3483 
3484  DCPS::Message_Block_Ptr payload(
3485  new ACE_Message_Block(
3488  new ACE_Message_Block(size)));
3489  if (!payload) {
3490  ACE_ERROR((LM_ERROR,
3491  ACE_TEXT("(%P|%t) ERROR: Sedp::Writer::write_unregister_dispose")
3492  ACE_TEXT(" - Failed to allocate message block message\n")));
3493  return DDS::RETCODE_ERROR;
3494  }
3495 
3496  Serializer serializer(payload->cont(), sedp_encoding);
3497  DCPS::EncapsulationHeader encap;
3498  if (encap.from_encoding(sedp_encoding, DCPS::MUTABLE) &&
3499  serializer << encap && serializer << plist) {
3500  // Send
3502  return DDS::RETCODE_OK;
3503  } else {
3504  // Error
3505  ACE_ERROR((LM_ERROR,
3506  ACE_TEXT("(%P|%t) ERROR: Sedp::Writer::write_unregister_dispose")
3507  ACE_TEXT(" - Failed to serialize RTPS control message\n")));
3508  return DDS::RETCODE_ERROR;
3509  }
3510 }
#define ACE_ERROR(X)
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
T::rv_reference move(T &p)
Definition: unique_ptr.h:141
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
static size_t get_max_serialized_size()
Similar to IDL compiler generated methods.
unique_ptr< ACE_Message_Block, Message_Block_Deleter > Message_Block_Ptr
sequence< Parameter > ParameterList
ACE_TEXT("TCP_Factory")
void write_control_msg(DCPS::Message_Block_Ptr payload, size_t size, DCPS::MessageId id, DCPS::SequenceNumber seq=DCPS::SequenceNumber())
Definition: Sedp.cpp:3557
const ReturnCode_t RETCODE_ERROR
const ReturnCode_t RETCODE_OK

The documentation for this class was generated from the following files: