UbiAnyCard Ver2 2.0
KICC ED785 단말기 연동 TCP 서버
로딩중...
검색중...
일치하는것 없음
AppMain.cpp 파일 참조
#include "pch.h"
#include "Logger.h"
#include "TcpServer.h"
#include "ED785Worker.h"
#include "Settings.h"
#include "ProtocolAdapter.h"
AppMain.cpp에 대한 include 의존 그래프

함수

static BOOL WINAPI ConsoleCtrlHandler (DWORD type)
int APIENTRY wWinMain (HINSTANCE, HINSTANCE, LPWSTR, int)

변수

static HANDLE g_hStopEvent = nullptr
static std::atomic< bool > g_running {true}

함수 문서화

◆ ConsoleCtrlHandler()

BOOL WINAPI ConsoleCtrlHandler ( DWORD type)
static
14{
15 if (type == CTRL_C_EVENT || type == CTRL_CLOSE_EVENT || type == CTRL_SHUTDOWN_EVENT)
16 {
17 g_running = false;
18 if (g_hStopEvent)
19 ::SetEvent(g_hStopEvent);
20 return TRUE;
21 }
22 return FALSE;
23}
static HANDLE g_hStopEvent
Definition AppMain.cpp:11
static std::atomic< bool > g_running
Definition AppMain.cpp:10

다음을 참조함 : g_hStopEvent, g_running.

다음에 의해서 참조됨 : wWinMain().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ wWinMain()

int APIENTRY wWinMain ( HINSTANCE ,
HINSTANCE ,
LPWSTR ,
int  )
26{
27 WSADATA wsa{};
28 if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
29 return 0;
30 SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE);
31
32 Logger::initialize(L"UbiAnyCard_Ver2");
33 Logger::setMinLevel(LogLevel::Debug);
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 // INI 설정 로드
46 AppSettings settings = LoadSettings();
47
48 // Stop 이벤트 생성
49 g_hStopEvent = ::CreateEventW(nullptr, TRUE, FALSE, L"UbiAnyCard_Ver2.Stop");
50 if (!g_hStopEvent)
51 {
52 Logger::error(L"Stop 이벤트 생성 실패");
53 }
54
55 TcpServer server;
56 ED785Worker worker;
57 ProtocolAdapter adapter(worker, settings);
58
59 // 서버 핸들러: 명령을 어댑터에 위임 (동기 처리)
60 server.setHandler([&](const std::string &cmd, const std::weak_ptr<TcpServer::Session> &session) -> std::string
61 { return adapter.onCommand(cmd, session); });
62 server.start(static_cast<uint16_t>(settings.tcpPort));
63
64 // ED785 워커 시작
65 worker.start(settings.vanPort, settings.vanBaud, [&](const ED785Worker::Response &resp)
66 { adapter.onEd785Response(resp); });
67
68 while (g_running.load())
69 {
70 if (g_hStopEvent && ::WaitForSingleObject(g_hStopEvent, 50) == WAIT_OBJECT_0)
71 {
72 Logger::info(L"정상 종료 요청 수신");
73 break;
74 }
75 std::this_thread::sleep_for(std::chrono::milliseconds(50));
76 }
77
78 worker.stop();
79 server.stop();
80 if (hMutex)
81 CloseHandle(hMutex);
82 if (g_hStopEvent)
83 {
84 ::CloseHandle(g_hStopEvent);
85 g_hStopEvent = nullptr;
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
Definition Settings.h:6
int vanBaud
Definition Settings.h:9
int tcpPort
Definition Settings.h:7
int vanPort
Definition Settings.h:8
Definition ED785Worker.h:31

다음을 참조함 : ConsoleCtrlHandler(), Debug, g_hStopEvent, g_running, LoadSettings(), ProtocolAdapter::onCommand(), TcpServer::setHandler(), ED785Worker::start(), TcpServer::start(), ED785Worker::stop(), TcpServer::stop(), AppSettings::tcpPort, AppSettings::vanBaud, AppSettings::vanPort.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

변수 문서화

◆ g_hStopEvent

HANDLE g_hStopEvent = nullptr
static

다음에 의해서 참조됨 : ConsoleCtrlHandler(), wWinMain().

◆ g_running

std::atomic<bool> g_running {true}
static
10{true};

다음에 의해서 참조됨 : ConsoleCtrlHandler(), wWinMain().