MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / receiveConnection

Method receiveConnection

libraries/LocalPeer/src/LocalPeer.cpp:205–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203
204
205void LocalPeer::receiveConnection()
206{
207 QLocalSocket* socket = server->nextPendingConnection();
208 if (!socket)
209 {
210 return;
211 }
212
213 while (socket->bytesAvailable() < (int)sizeof(quint32))
214 {
215 socket->waitForReadyRead();
216 }
217 QDataStream ds(socket);
218 QByteArray uMsg;
219 quint32 remaining;
220 ds >> remaining;
221 uMsg.resize(remaining);
222 int got = 0;
223 char* uMsgBuf = uMsg.data();
224 do
225 {
226 got = ds.readRawData(uMsgBuf, remaining);
227 remaining -= got;
228 uMsgBuf += got;
229 } while (remaining && got >= 0 && socket->waitForReadyRead(2000));
230 if (got < 0)
231 {
232 qWarning("QtLocalPeer: Message reception failed %s", socket->errorString().toLatin1().constData());
233 delete socket;
234 return;
235 }
236 socket->write(ack, qstrlen(ack));
237 socket->waitForBytesWritten(1000);
238 socket->waitForDisconnected(1000); // make sure client reads ack
239 delete socket;
240 emit messageReceived(uMsg); //### (might take a long time to return)
241}

Callers

nothing calls this directly

Calls 3

resizeMethod · 0.80
dataMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected