Program Listing for File channel_mgnt.h#
↰ Return to documentation for file (ipc_shared_mem\channel_mgnt.h)
#ifndef CHANNEL_MGNT_H
#define CHANNEL_MGNT_H
#include <support/component_impl.h>
#include <interfaces/ipc.h>
#include "connection.h"
#include "shared_mem_buffer_posix.h"
#include "shared_mem_buffer_windows.h"
#include "watchdog.h"
#include "connection.h"
#define TEST_DECLARE_OBJECT_CLASS_ALIAS(...) \
static sdv::sequence<sdv::u8string> GetClassAliasesStaticMyTest() \
{ \
return sdv::sequence<sdv::u8string>({__VA_ARGS__}); \
}
class CSharedMemChannelMgnt : public sdv::CSdvObject, public sdv::IObjectControl, public sdv::ipc::ICreateEndpoint,
public sdv::ipc::IChannelAccess
{
public:
// Interface map
BEGIN_SDV_INTERFACE_MAP()
SDV_INTERFACE_ENTRY(sdv::IObjectControl)
SDV_INTERFACE_ENTRY(sdv::ipc::IChannelAccess)
SDV_INTERFACE_ENTRY(sdv::ipc::ICreateEndpoint)
END_SDV_INTERFACE_MAP()
// Object declarations
DECLARE_OBJECT_CLASS_TYPE(sdv::EObjectType::SystemObject)
DECLARE_OBJECT_CLASS_NAME("DefaultSharedMemoryChannelControl")
DECLARE_OBJECT_CLASS_ALIAS("LocalChannelControl")
DECLARE_DEFAULT_OBJECT_NAME("LocalChannelControl")
DECLARE_OBJECT_SINGLETON()
void Initialize(const sdv::u8string& ssObjectConfig) override;
sdv::EObjectStatus GetStatus() const override;
void SetOperationMode(sdv::EOperationMode eMode) override;
void Shutdown() override;
sdv::ipc::SChannelEndpoint CreateEndpoint(/*in*/ const sdv::u8string& ssChannelConfig) override;
sdv::IInterfaceAccess* Access(const sdv::u8string& ssConnectString) override;
private:
struct SChannel
{
SChannel() : bufferTargetTx(bufferOriginRx.GetConnectionString()), bufferTargetRx(bufferOriginTx.GetConnectionString())
{
if (!bufferOriginRx.IsValid()) std::cout << "Channel Origin RX is invalid!" << std::endl;
if (!bufferOriginTx.IsValid()) std::cout << "Channel Origin TX is invalid!" << std::endl;
if (!bufferTargetRx.IsValid()) std::cout << "Channel Target RX is invalid!" << std::endl;
if (!bufferTargetTx.IsValid()) std::cout << "Channel Target TX is invalid!" << std::endl;
}
CSharedMemBufferTx bufferOriginTx;
CSharedMemBufferRx bufferOriginRx;
CSharedMemBufferTx bufferTargetTx;
CSharedMemBufferRx bufferTargetRx;
};
sdv::EObjectStatus m_eObjectStatus = sdv::EObjectStatus::initialization_pending;
std::map<std::string, std::unique_ptr<SChannel>> m_mapChannels;
CWatchDog m_watchdog;
};
DEFINE_SDV_OBJECT(CSharedMemChannelMgnt)
#endif // ! defined CHANNEL_MGNT_H