18 #ifndef __ACE_INLINE__ 35 , remote_peer_(remote_peer)
36 , reverse_start_lock_(start_lock_)
39 , reassembly_(link->config()->fragment_reassembly_timeout_)
45 , initial_syn_delay_(link->config()->syn_interval_)
46 , config_name(link->config()->
name())
85 ACE_TEXT(
"MulticastSession::send_control: ")
86 ACE_TEXT(
"create_control failed!\n")));
94 ACE_TEXT(
"MulticastSession::send_control: ")
95 ACE_TEXT(
"send_control failed: %d!\n"),
105 switch (submessage_id) {
137 serializer >> local_peer;
138 serializer.read_octet_array(reinterpret_cast<ACE_CDR::Octet*>(&remote_writer),
sizeof(remote_writer));
139 serializer.read_octet_array(reinterpret_cast<ACE_CDR::Octet*>(&local_reader),
sizeof(local_reader));
144 bool call_passive_connection =
false;
145 bool call_send_synack =
true;
150 call_send_synack =
false;
152 RepoIdSet::const_iterator pos2 = pos1->second.find(remote_writer);
153 if (pos2 == pos1->second.end()) {
154 call_send_synack =
false;
159 "(%P|%t) MulticastSession[%C]::syn_received " 160 "local %#08x%08x %C remote %#08x%08x %C\n",
173 call_passive_connection =
true;
177 if (call_passive_connection) {
186 if (call_send_synack) {
196 pos1 != limit; ++pos1) {
197 const GUID_t& local_writer = pos1->first;
198 for (RepoIdSet::const_iterator pos2 = pos1->second.begin(), limit = pos1->second.end(); pos2 != limit; ++pos2) {
199 const GUID_t& remote_reader = *pos2;
200 send_syn(local_writer, remote_reader);
211 const GUID_t& remote_reader)
220 serializer.write_octet_array(reinterpret_cast<const ACE_CDR::Octet*>(&local_writer),
sizeof(local_writer));
221 serializer.write_octet_array(reinterpret_cast<const ACE_CDR::Octet*>(&remote_reader),
sizeof(remote_reader));
224 "(%P|%t) MulticastSession[%C]::send_syn " 225 "local %#08x%08x %C remote %#08x%08x %C\n",
230 (
unsigned int)(this->remote_peer_ >> 32),
231 (
unsigned int) this->remote_peer_,
258 serializer >> local_peer;
259 serializer.read_octet_array(reinterpret_cast<ACE_CDR::Octet*>(&remote_reader),
sizeof(remote_reader));
260 serializer.read_octet_array(reinterpret_cast<ACE_CDR::Octet*>(&local_writer),
sizeof(local_writer));
266 "(%P|%t) MulticastSession[%C]::synack_received " 267 "local %#08x%08x %C remote %#08x%08x %C\n",
288 const GUID_t& remote_writer)
297 serializer.write_octet_array(reinterpret_cast<const ACE_CDR::Octet*>(&local_reader),
sizeof(local_reader));
298 serializer.write_octet_array(reinterpret_cast<const ACE_CDR::Octet*>(&remote_writer),
sizeof(remote_writer));
301 "local %#08x%08x %C remote %#08x%08x %C active %d\n",
306 (
unsigned int)(this->remote_peer_ >> 32),
307 (
unsigned int) this->remote_peer_,
virtual bool control_received(char submessage_id, const Message_Block_Ptr &control)
RcHandle< T > rchandle_from(T *pointer)
#define ACE_GUARD(MUTEX, OBJ, LOCK)
void synack_received(const Message_Block_Ptr &control)
MulticastTransport_rch transport()
bool swap_bytes() const
Determine if the serializer should swap bytes.
ACE_Message_Block * create_control(char submessage_id, DataSampleHeader &header, Message_Block_Ptr data)
const char * c_str() const
void syn_received(const Message_Block_Ptr &control)
T::rv_reference move(T &p)
MulticastDataLink * link()
Conversion processing and value testing utilities for RTPS GUID_t types.
bool reassemble(ReceivedDataSample &data, const TransportHeader &header)
MulticastPeer local_peer() const
ACE_Thread_Mutex ack_lock_
MulticastPeer remote_peer_
Class to serialize and deserialize data for DDS.
void send_control(char submessage_id, Message_Block_Ptr data)
void remove_remote(const GUID_t &local, const GUID_t &remote)
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Holds a data sample received by the transport.
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
const TH & received_header() const
Defines class that represents a transport packet header.
void add_remote(const GUID_t &local)
virtual ~MulticastSession()
MulticastSession(RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer)
void send_synack(const GUID_t &local_reader, const GUID_t &remote_writer)
TransportReassembly reassembly_
bool reassemble(const SequenceNumber &transportSeq, bool firstFrag, ReceivedDataSample &data, ACE_UINT32 total_frags=0)
#define VDBG_LVL(DBG_ARGS, LEVEL)
SendControlStatus send_control(const DataSampleHeader &header, Message_Block_Ptr data)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
void send_syn(const GUID_t &local_writer, const GUID_t &remote_reader)
void send_all_syn(const MonotonicTimePoint &now)
void remove_remote_i(const GUID_t &local, const GUID_t &remote)
#define TheServiceParticipant
bool isWriter() const
Returns true if the GUID represents a writer entity.
MulticastDataLink * link_
The Internal API and Implementation of OpenDDS.
PendingRemoteMap pending_remote_map_
virtual void syn_hook(const SequenceNumber &)
RcHandle< Sporadic > syn_watchdog_
const TimeDuration initial_syn_delay_
MulticastReceiveStrategy * receive_strategy()
void invoke_on_start_callbacks(bool success)