MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / receiveData

Method receiveData

src/OpenLoco/src/Network/Socket.cpp:496–520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

494 }
495
496 NetworkReadPacket receiveData(
497 void* buffer, size_t size, size_t* sizeReceived, std::unique_ptr<INetworkEndpoint>* sender) override
498 {
499 sockaddr_in6 senderAddr{};
500 socklen_t senderAddrLen = sizeof(sockaddr_in);
501 if (_status != SocketStatus::listening)
502 {
503 senderAddrLen = _endpoint.getAddressLen();
504 std::memcpy(&senderAddr, &_endpoint.getAddress(), senderAddrLen);
505 }
506 auto readBytes = recvfrom(
507 _socket, static_cast<char*>(buffer), static_cast<int32_t>(size), 0, reinterpret_cast<sockaddr*>(&senderAddr), &senderAddrLen);
508 if (readBytes <= 0)
509 {
510 *sizeReceived = 0;
511 return NetworkReadPacket::noData;
512 }
513
514 *sizeReceived = readBytes;
515 if (sender != nullptr)
516 {
517 *sender = std::make_unique<NetworkEndpoint>(reinterpret_cast<sockaddr*>(&senderAddr), senderAddrLen);
518 }
519 return NetworkReadPacket::success;
520 }
521
522 void close() override
523 {

Callers 1

receivePacketLoopMethod · 0.80

Calls 1

getAddressLenMethod · 0.80

Tested by

no test coverage detected