8 #ifndef OPENDDS_DCPS_TRANSPORT_FRAMEWORK_TRANSPORTCLIENT_H 9 #define OPENDDS_DCPS_TRANSPORT_FRAMEWORK_TRANSPORTCLIENT_H 37 class SendStateDataSampleList;
55 enum { ASSOC_OK = 1, ASSOC_ACTIVE = 2 };
62 void enable_transport(
bool reliable,
bool durable);
63 void enable_transport_using_config(
bool reliable,
bool durable,
69 void populate_connection_info();
75 void disassociate(
const GUID_t& peerId);
76 void stop_associating();
78 void send_final_acks();
79 void transport_stop();
82 void register_for_reader(
const GUID_t& participant,
88 void unregister_for_reader(
const GUID_t& participant,
92 void register_for_writer(
const GUID_t& participant,
98 void unregister_for_writer(
const GUID_t& participant,
102 void update_locators(
const GUID_t& remote,
109 bool send_response(
const GUID_t& peer,
118 const GUID_t& destination);
125 const GUID_t& destination);
128 bool remove_all_msgs();
131 virtual GUID_t get_guid()
const = 0;
134 void terminate_send_if_suspended();
136 bool associated_with(
const GUID_t& remote)
const;
137 bool pending_association_with(
const GUID_t& remote)
const;
145 void data_acked(
const GUID_t& remote);
147 bool is_leading(
const GUID_t& reader_id)
const;
152 cdr_encapsulation_ = encap;
158 virtual bool check_transport_qos(
const TransportInst& inst) = 0;
166 #if defined(OPENDDS_SECURITY) 175 void use_datalink_i(
const GUID_t& remote_id,
194 friend class ::DDS_TEST;
217 bool safe_to_remove();
227 void clean_prev_pending();
239 execute_or_enqueue(make_rch<ScheduleCommand>(
this, transport_client, pend));
244 return execute_or_enqueue(make_rch<CancelCommand>(
this, pend));
248 long get_id()
const {
return timer_id_; }
262 const PendingAssoc_rch& assoc)
273 const PendingAssoc_rch& assoc)
275 , transport_client_ (transport_client)
279 if (timer_->reactor()) {
283 assoc_->scheduled_ =
true;
284 long id = timer_->reactor()->schedule_timer(assoc_.in(),
286 client->passive_connect_duration_.value());
297 const PendingAssoc_rch& assoc)
302 if (timer_->reactor() && timer_->get_id()) {
304 timer_->reactor()->cancel_timer(timer_->get_id());
306 assoc_->scheduled_ =
false;
CommandBase(PendingAssocTimer *timer, const PendingAssoc_rch &assoc)
ACE_UINT64 max_transaction_id_seen_
PendingAssocTimer(ACE_Reactor *reactor, ACE_thread_t owner)
void cdr_encapsulation(bool encap)
WeakRcHandle< TransportClient > client_
virtual SequenceNumber get_max_sn() const
const InstanceHandle_t HANDLE_NIL
DataLinkIndex data_link_index_
Base class to hold configuration settings for TransportImpls.
virtual RcHandle< BitSubscriber > get_builtin_subscriber_proxy() const
PrevPendingMap prev_pending_
ReactorInterceptor::CommandPtr cancel_timer(const PendingAssoc_rch &pend)
virtual DDS::Security::ParticipantCryptoHandle get_crypto_handle() const
time_t time(time_t *tloc=0)
const TransportLocatorSeq & connection_info() const
TransportConfig_rch config_
#define OpenDDS_Dcps_Export
virtual bool reactor_is_shut_down() const
void schedule_timer(TransportClient_rch transport_client, const PendingAssoc_rch &pend)
ssize_t send(ACE_HANDLE handle, const void *buf, size_t len, int flags, const ACE_Time_Value *timeout=0)
ACE_Thread_Mutex lock_
Seems to protect accesses to impls_, pending_, links_, data_link_index_.
sequence< TransportLocator > TransportLocatorSeq
bool cdr_encapsulation() const
ACE_UINT64 expected_transaction_id_
ACE_Guard< ACE_Thread_Mutex > lock_
TransportImpl::ConnectionAttribs attribs_
DataSampleElement * max_transaction_tail_
DOMAINID_TYPE_NATIVE DomainId_t
#define OPENDDS_MULTIMAP_CMP(K, T, C)
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
RcHandle< TransportClient > TransportClient_rch
WeakRcHandle< TransportClient > transport_client_
long ParticipantCryptoHandle
RcHandle< PendingAssocTimer > pending_assoc_timer_
TransportLocatorSeq conn_info_
typedef OPENDDS_MAP_CMP(GUID_t, WriterCoherentSample, GUID_tKeyLessThan) GroupCoherentSamples
ScheduleCommand(PendingAssocTimer *timer, TransportClient_rch transport_client, const PendingAssoc_rch &assoc)
virtual void transport_assoc_done(int, const GUID_t &)
ACE_Guard< ACE_Thread_Mutex > Guard
RcHandle< PendingAssoc > PendingAssoc_rch
Mix-in class for DDS entities which directly use the transport layer.
ACE_Reverse_Lock< ACE_Thread_Mutex > Reverse_Lock_t
unsigned long long ACE_UINT64
PendingAssocTimer * timer_
ssize_t send_i(ACE_HANDLE handle, const void *buf, size_t len)
Reverse_Lock_t reverse_lock_
Sequence number abstraction. Only allows positive 64 bit values.
static SequenceNumber SEQUENCENUMBER_UNKNOWN()
CancelCommand(PendingAssocTimer *timer, const PendingAssoc_rch &assoc)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
PendingAssoc(RcHandle< TransportClient > tc_rch)
TimeDuration passive_connect_duration_
typedef OPENDDS_VECTOR(ActionConnectionRecord) ConnectionRecords
#define TheServiceParticipant
The Internal API and Implementation of OpenDDS.
Defines the interface that allows DataWriters (and lower levels) to inform discovery.
ACE_Thread_Mutex send_transaction_lock_
SendControlStatus
Return code type for send_control() operations.