-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPipeServer.h
More file actions
88 lines (75 loc) · 1.83 KB
/
PipeServer.h
File metadata and controls
88 lines (75 loc) · 1.83 KB
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
#pragma once
#include <Windows.h>
#include <functional>
#include <vector>
#pragma hdrstop
/** :: Example Code
*
void OnServerMessageReceived(const std::string& message) {
std::cout << "Received message from server: " << message << std::endl;
}
int main() {
std::wstring wstrPipeName(L"myfifo");
Server server;
server.Create(wstrPipeName);
server.SetMessageReceivedCallback(std::bind(&OnServerMessageReceived, std::placeholders::_1));
server.Start();
return 0;
}
*/
/**
* \brief Named Pipe Server 클래스.
*/
class CPipeServer {
public:
/**
* \brief Named Pipe Server 생성자.
*/
CPipeServer();
/**
* \brief Named Pipe Server 소멸자.
*
*/
virtual ~CPipeServer();
/**
* 파이프를 생성한다..
*
* \param wstrPipeName Named Pipe 이름.
* \return
*/
virtual bool Create(std::wstring& wstrPipeName);
/**
* 생성된 파이프를 삭제한다.
*
* \return
*/
virtual bool Delete();
/**
* \brief Server 시작.
*/
virtual void Start();
/**
* \brief Server 중단.
*
*/
virtual void Stop();
/**
* \brief Message Received Callback 등록.
* \param callback 등록할 콜백 함수.
*/
virtual void SetMessageReceivedCallback(const std::function<void(const std::vector<BYTE>&)>& callback);
/**
* \brief 에러 핸들러.
*/
virtual void ErrorHandler();
private:
std::wstring m_strPipeName;
BOOL m_bStop;
HANDLE m_hPipe; ///< Named Pipe 핸들.
std::function<void(const std::vector<BYTE>&)> m_messageReceivedCallback; ///< Message Received Callback.
/**
* \brief Message Received Callback.
* \param message 받은 메시지.
*/
virtual void MessageReceivedCallback(const std::vector<BYTE>& packet);
};