File size: 5,102 Bytes
053b80b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
/* ***************************************************************************
* Kinova inc.
* Project :
*
* Copyright (c) 2006-2018 Kinova Incorporated. All rights reserved.
****************************************************************************/
#ifndef _TRANSPORT_BRIDGE_DUMMY_H_
#define _TRANSPORT_BRIDGE_DUMMY_H_
#include <string>
#include <functional>
#include "client/ITransportClient.h"
#include "ITransportServer.h"
namespace Kinova
{
using namespace Api;
namespace Helper
{
class TransportBridgeDummy
{
class TransportBridgeClientDummy : public ITransportClient
{
TransportBridgeDummy *m_transportBridgeDummy;
public:
TransportBridgeClientDummy(TransportBridgeDummy *transportBridgeDummy)
{
m_transportBridgeDummy = transportBridgeDummy;
}
virtual ~TransportBridgeClientDummy();
virtual bool connect(std::string host = "127.0.0.1", uint32_t port = kApiPort) override { return true; }
virtual void disconnect() override {}
virtual void send(const char *txBuffer, uint32_t txSize) override
{
m_transportBridgeDummy->m_onMessageCallbackServer(m_transportBridgeDummy->m_connectionHandle, (uint8_t *) txBuffer, (int) txSize);
}
virtual void onMessage(std::function<void(const char *, uint32_t)> callbackClient) override
{
m_transportBridgeDummy->m_onMessageCallbackClient = callbackClient;
}
virtual char *getTxBuffer() override { return m_transportBridgeDummy->m_bufferClientToServer; }
virtual size_t getMaxTxBufferSize() override { return m_transportBridgeDummy->m_maxBufferSizeClientToServer; }
};
class TransportBridgeServerDummy : public ITransportServer
{
TransportBridgeDummy *m_transportBridgeDummy;
public:
TransportBridgeServerDummy(TransportBridgeDummy *transportBridgeDummy)
{
m_transportBridgeDummy = transportBridgeDummy;
}
virtual ~TransportBridgeServerDummy() override {}
virtual void Process() override {}
virtual bool Send(const ClientConnectionHandle &connectionHandle, char *TXBuffer, int txLen) override
{
m_transportBridgeDummy->m_onMessageCallbackClient((const char *) TXBuffer, (uint32_t) txLen);
}
virtual void OnMessage(std::function<void(const ClientConnectionHandle &, uint8_t *, int)> callbackServer) override
{
m_transportBridgeDummy->m_onMessageCallbackServer = callbackServer;
}
virtual char *GetTxBuffer(size_t *pTxLen) override
{
*pTxLen = m_transportBridgeDummy->m_maxBufferSizeServerToClient;
return m_transportBridgeDummy->m_bufferServerToClient;
}
};
ITransportServer *m_server;
ITransportClient *m_client;
public:
static constexpr uint32_t kMaxBufferSizeServerToClient = 65507;
static constexpr uint32_t kMaxBufferSizeClientToServer = 65507;
const uint32_t m_maxBufferSizeServerToClient = kMaxBufferSizeServerToClient;
const uint32_t m_maxBufferSizeClientToServer = kMaxBufferSizeClientToServer;
char m_bufferServerToClient[kMaxBufferSizeServerToClient];
char m_bufferClientToServer[kMaxBufferSizeClientToServer];
std::function<void(const char *, uint32_t)> m_onMessageCallbackClient;
std::function<void(const ClientConnectionHandle &, uint8_t *, int)> m_onMessageCallbackServer;
struct ClientConnectionHandle m_connectionHandle;
TransportBridgeDummy()
{
m_connectionHandle.clientId = 1;
auto m_server = new TransportBridgeServerDummy(this);
auto m_client = new TransportBridgeClientDummy(this);
}
virtual ~TransportBridgeDummy()
{
delete m_server;
delete m_client;
}
ITransportServer *getServerTransport() { return m_server; }
ITransportClient *getClientTransport() { return m_client; }
};
}
}
#endif
|