MCPcopy Create free account
hub / github.com/MonaSolutions/MonaServer / receiveFrom

Method receiveFrom

MonaBase/sources/Socket.cpp:379–400  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377
378
379 int receiveFrom(Exception& ex, void* buffer, int length, SocketAddress& address, int flags) {
380 if (!_initialized && !init(ex, address.family()))
381 return 0;
382
383 union {
384 struct sockaddr_in sa_in;
385 struct sockaddr_in6 sa_in6;
386 } addr;
387 NET_SOCKLEN addrSize = sizeof(addr);
388 int rc;
389 do {
390 rc = ::recvfrom(_sockfd, reinterpret_cast<char*>(buffer), length, flags, (sockaddr*)&addr, &addrSize);
391 } while (rc < 0 && Net::LastError() == NET_EINTR);
392 if (rc < 0) {
393 int err = Net::LastError();
394 if (err == NET_EAGAIN || err == NET_EWOULDBLOCK)
395 return 0;
396 Net::SetException(ex, err," (length=",length,", flags=",flags,")");
397 }
398 address.set((sockaddr&)addr);
399 return rc;
400 }
401
402
403 bool canSend(Exception& ex) {

Callers

nothing calls this directly

Calls 2

familyMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected