MCPcopy Create free account
hub / github.com/Norbyte/ositools / MessageLoop

Method MessageLoop

OsiInterface/DebugInterface.cpp:133–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131 }
132
133 void DebugInterface::MessageLoop(SOCKET sock)
134 {
135 receivePos_ = 0;
136 for (;;) {
137 int len = recv(sock, (char *)&receiveBuf_[receivePos_], sizeof(receiveBuf_) - receivePos_, 0);
138 if (len < 0) {
139 Debug("Socket recv failed: %d, error %d", len, WSAGetLastError());
140 return;
141 }
142
143 receivePos_ += len;
144 while (receivePos_ >= 4) {
145 uint32_t messageLength = *reinterpret_cast<uint32_t *>(&receiveBuf_[0]);
146
147 if (messageLength < 4 || messageLength > sizeof(receiveBuf_)) {
148 Debug("DebugInterface::MessageLoop(): Illegal message length: %d", messageLength);
149 return;
150 }
151
152 if (receivePos_ >= messageLength) {
153 if (!ProcessMessage(&receiveBuf_[4], messageLength - 4)) {
154 Debug("DebugInterface::MessageLoop(): Message processing failed");
155 return;
156 }
157
158 memmove(&receiveBuf_[0], &receiveBuf_[messageLength], receivePos_ - messageLength);
159 receivePos_ -= messageLength;
160 }
161 else {
162 break;
163 }
164 }
165 }
166 }
167
168 void DebugInterface::Run()
169 {

Callers

nothing calls this directly

Calls 1

DebugFunction · 0.85

Tested by

no test coverage detected