00001
00002
00003
00004
00005
00006
00007
00008 #ifndef OPENDDS_SHMEMSENDSTRATEGY_H
00009 #define OPENDDS_SHMEMSENDSTRATEGY_H
00010
00011 #include "Shmem_Export.h"
00012
00013 #include "dds/DCPS/transport/framework/TransportSendStrategy.h"
00014
00015 #include "ace/OS_NS_Thread.h"
00016
00017 #include <string>
00018
00019 namespace OpenDDS {
00020 namespace DCPS {
00021
00022 class ShmemDataLink;
00023 struct ShmemData;
00024
00025 class OpenDDS_Shmem_Export ShmemSendStrategy
00026 : public TransportSendStrategy {
00027 public:
00028 explicit ShmemSendStrategy(ShmemDataLink* link);
00029
00030 virtual bool start_i();
00031 virtual void stop_i();
00032
00033 protected:
00034 virtual ssize_t send_bytes_i(const iovec iov[], int n);
00035
00036 private:
00037 ShmemDataLink* link_;
00038 std::string bound_name_;
00039 ACE_sema_t peer_semaphore_;
00040 ShmemData* current_data_;
00041 };
00042
00043 }
00044 }
00045
00046 #endif