8 #ifndef OPENDDS_DCPS_TRANSPORT_FRAMEWORK_TRANSPORTSENDSTRATEGY_H 9 #define OPENDDS_DCPS_TRANSPORT_FRAMEWORK_TRANSPORTSENDSTRATEGY_H 28 #if defined(OPENDDS_SECURITY) 29 #include <dds/DdsSecurityCoreC.h> 42 class ThreadSynchResource;
43 class TransportQueueElement;
44 class TransportSendElement;
45 class TransportSendBuffer;
46 class DataSampleElement;
47 class QueueRemoveVisitor;
48 class PacketRemoveVisitor;
88 void send_stop(
GUID_t repoId);
95 void remove_all_msgs(
const GUID_t& pub_id);
114 virtual void relink(
bool do_suspend =
true);
127 void terminate_send(
bool graceful_disconnecting =
false);
128 virtual void terminate_send_if_suspended();
133 virtual void stop_i() = 0;
138 void link_released(
bool flag);
159 static const size_t UDP_MAX_MESSAGE_SIZE = 65466;
169 bool fragmentation_helper(
185 virtual ssize_t send_bytes(
const iovec iov[],
int n,
int& bp);
187 virtual ssize_t non_blocking_send(
const iovec iov[],
int n,
int& bp);
189 virtual ssize_t send_bytes_i(
const iovec iov[],
int n) = 0;
192 virtual void prepare_header_i();
195 virtual void prepare_packet_i();
205 virtual size_t max_message_size()
const;
208 void set_graceful_disconnecting(
bool flag);
218 #ifdef OPENDDS_SECURITY 240 void direct_send(
bool relink);
250 void get_packet_elems_from_queue();
254 void prepare_header();
259 void prepare_packet();
269 #ifdef OPENDDS_SECURITY 287 int adjust_packet_after_send(
ssize_t num_bytes_sent);
294 size_t space_available(
size_t already_used = 0)
const;
299 size_t current_space_available()
const;
339 static const char* mode_as_str(
SendMode mode);
399 OPENDDS_VECTOR(TQESendModePair) delayed_delivered_notification_queue_;
444 void set_header_source(
ACE_INT64 source);
452 #if defined (__ACE_INLINE__) DataBlockAllocator replaced_element_db_allocator_
WeakRcHandle< TransportImpl > transport_
std::pair< TransportQueueElement *, SendMode > TQESendModePair
Used for delayed notifications when performing work.
ACE_Message_Block * header_block_
Current transport packet header, marshalled.
SendMode mode_before_suspend_
SequenceNumber header_sequence_
Current transport header sequence number.
ACE_Message_Block * pkt_chain_
virtual ACE_Message_Block * pre_send_packet(const ACE_Message_Block *m)
#define OpenDDS_Dcps_Export
ssize_t send(ACE_HANDLE handle, const void *buf, size_t len, int flags, const ACE_Time_Value *timeout=0)
TransportSendBuffer * send_buffer_
unique_ptr< TransportMessageBlockAllocator > header_mb_allocator_
Allocator for header data block.
Atomic< SendMode > mode_
This mode determines how send() calls will be handled.
TransportHeader header_
Current transport packet header.
unique_ptr< DataAllocator > header_data_allocator_
RemoveResult
used by DataLink::remove_sample(), TransportSendStrategy, *RemoveVisitor
size_t max_samples_
Configuration - max number of samples per transport packet.
ACE_UINT32 optimum_size_
Configuration - optimum transport packet size (bytes)
bool graceful_disconnecting_
BasicQueue< TransportQueueElement > QueueType
ACE_Guard< LockType > GuardType
virtual ACE_Message_Block * duplicate(void) const
Defines class that represents a transport packet header.
virtual bool start_i()
Let the subclass start.
ACE_HANDLE get_handle(void)
unique_ptr< ThreadSynch > synch_
The thread synch object.
virtual Security::SecurityConfig_rch security_config() const
size_t max_header_size_
Maximum marshalled size of the transport packet header.
unique_ptr< DataBlockLockPool > header_db_lock_pool_
DataBlockLockPool.
unique_ptr< TransportDataBlockAllocator > header_db_allocator_
Allocator for header message block.
Sequence number abstraction. Only allows positive 64 bit values.
ACE_UINT32 max_size_
Configuration - max transport packet size (bytes)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
typedef OPENDDS_VECTOR(ActionConnectionRecord) ConnectionRecords
DCPS::RcHandle< SecurityConfig > SecurityConfig_rch
The Internal API and Implementation of OpenDDS.
Dynamic_Cached_Allocator_With_Overflow< ACE_Thread_Mutex > DataAllocator
Allocator for data buffers.
MessageBlockAllocator replaced_element_mb_allocator_
Cached allocator for TransportReplaceElement.
Base wrapper class around a data/control sample to be sent.