MCPcopy Create free account
hub / github.com/dobin/RedEdr / PplReaderThread

Function PplReaderThread

RedEdr/pplreader.cpp:63–98  ·  view source on GitHub ↗

Pipe Reader Thread: Server

Source from the content-addressed store, hash-verified

61
62// Pipe Reader Thread: Server
63DWORD WINAPI PplReaderThread(LPVOID param) {
64 LOG_A(LOG_DEBUG, "!Ppl ReaderThread: begin");
65
66 // Loop which accepts new clients
67 while (WaitForSingleObject(hStopEventPpl, 0) != WAIT_OBJECT_0) {
68 PipeServer* pipeServer = new PipeServer("RedEdr PplReader", (wchar_t*) PPL_DATA_PIPE_NAME);
69 if (pipeServer == nullptr) {
70 LOG_A(LOG_ERROR, "PplReader: Failed to create PipeServer");
71 Sleep(1000); // Brief delay before retry
72 continue;
73 }
74 // Signal that the thread is ready
75 SetEvent(threadReadynessPpl);
76
77 if (!pipeServer->StartAndWaitForClient(TRUE)) {
78 LOG_A(LOG_ERROR, "PplReader: Failed to start pipe server or wait for client");
79 pipeServer->Shutdown();
80 delete pipeServer;
81 Sleep(1000); // Brief delay before retry
82 continue;
83 }
84
85 LOG_A(LOG_INFO, "PplReader: Client connected successfully");
86
87 // Handle it here
88 PplReaderClient(pipeServer);
89
90 // We finished
91 LOG_A(LOG_INFO, "PplReader: Client disconnected, shutting down this pipe");
92 pipeServer->Shutdown();
93 delete pipeServer;
94 }
95
96 LOG_A(LOG_DEBUG, "!Ppl ReaderThread: end");
97 return 0;
98}
99
100
101// Pipe Reader Thread: Process Client

Callers

nothing calls this directly

Calls 4

PplReaderClientFunction · 0.85
StartAndWaitForClientMethod · 0.80
ShutdownMethod · 0.80
LOG_AFunction · 0.70

Tested by

no test coverage detected