Add project files.
This commit is contained in:
76
L2BotDll/Transports/NamedPipeTransport.h
Normal file
76
L2BotDll/Transports/NamedPipeTransport.h
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma once
|
||||
#include "Domain/Transports/TransportInterface.h"
|
||||
#include <Windows.h>
|
||||
#include "NamedPipe.h"
|
||||
#include "../Common/Common.h"
|
||||
|
||||
using namespace L2Bot::Domain;
|
||||
|
||||
class NamedPipeTransport : public Transports::TransportInterface
|
||||
{
|
||||
public:
|
||||
const bool Connect() override
|
||||
{
|
||||
OutputDebugStringA(m_PipeName.c_str());
|
||||
if (!m_ConnectionPipe.Connect(m_PipeName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
OutputDebugStringA("Client connected to connection pipe");
|
||||
|
||||
const std::string mainPipeName = GenerateUUID();
|
||||
|
||||
m_ConnectionPipe.Send("\\\\.\\pipe\\" + mainPipeName);
|
||||
|
||||
OutputDebugStringA("Name of main pipe sended");
|
||||
|
||||
if (!m_Pipe.Connect(mainPipeName))
|
||||
{
|
||||
OutputDebugStringA(std::to_string(GetLastError()).c_str());
|
||||
return false;
|
||||
}
|
||||
OutputDebugStringA("Client connected to main pipe");
|
||||
|
||||
m_Pipe.Send("Hello!");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const void Send(std::string data) override
|
||||
{
|
||||
if (!m_Pipe.IsConnected())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_Pipe.Send(data);
|
||||
}
|
||||
const std::string Receive() override
|
||||
{
|
||||
if (!m_Pipe.IsConnected())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
return m_Pipe.Receive();
|
||||
}
|
||||
|
||||
const bool IsConnected() const override
|
||||
{
|
||||
return m_Pipe.IsConnected();
|
||||
}
|
||||
|
||||
NamedPipeTransport(const std::string& pipeName) :
|
||||
m_PipeName(pipeName)
|
||||
{
|
||||
}
|
||||
|
||||
NamedPipeTransport() = delete;
|
||||
virtual ~NamedPipeTransport() = default;
|
||||
|
||||
private:
|
||||
NamedPipe m_ConnectionPipe;
|
||||
NamedPipe m_Pipe;
|
||||
std::string m_PipeName = "";
|
||||
};
|
Reference in New Issue
Block a user