26{
27 WSADATA wsa{};
28 if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
29 return 0;
31
32 Logger::initialize(L"UbiAnyCard_Ver2");
34 Logger::info(L"프로세스 시작");
35
36
37 HANDLE hMutex = CreateMutexW(nullptr, TRUE, L"UbiAnyCard_Ver2.Instance");
38 if (!hMutex || GetLastError() == ERROR_ALREADY_EXISTS)
39 {
40 Logger::error(L"이미 실행 중");
41 WSACleanup();
42 return 0;
43 }
44
45
47
48
49 g_hStopEvent = ::CreateEventW(
nullptr, TRUE, FALSE, L
"UbiAnyCard_Ver2.Stop");
51 {
52 Logger::error(L"Stop 이벤트 생성 실패");
53 }
54
58
59
60 server.
setHandler([&](
const std::string &cmd,
const std::weak_ptr<TcpServer::Session> &session) -> std::string
61 { return adapter.onCommand(cmd, session); });
63
64
66 { adapter.onEd785Response(resp); });
67
69 {
71 {
72 Logger::info(L"정상 종료 요청 수신");
73 break;
74 }
75 std::this_thread::sleep_for(std::chrono::milliseconds(50));
76 }
77
80 if (hMutex)
81 CloseHandle(hMutex);
83 {
86 }
87 Logger::info(L"프로세스 종료");
88 Logger::shutdown();
89 WSACleanup();
90 return 0;
91}
static BOOL WINAPI ConsoleCtrlHandler(DWORD type)
Definition AppMain.cpp:13
@ Debug
Definition Logger.h:7
AppSettings LoadSettings()
Definition Settings.h:23
Definition ED785Worker.h:14
void stop()
Definition ED785Worker.cpp:47
bool start(int comPort, int baudRate, ResponseCallback callback)
Definition ED785Worker.cpp:23
Definition ProtocolAdapter.h:12
Definition TcpServer.h:11
void setHandler(CommandHandler handler)
Definition TcpServer.cpp:113
bool start(uint16_t port)
Definition TcpServer.cpp:61
void stop()
Definition TcpServer.cpp:101
int vanBaud
Definition Settings.h:9
int tcpPort
Definition Settings.h:7
int vanPort
Definition Settings.h:8
Definition ED785Worker.h:31