MCPcopy Create free account
hub / github.com/PlutoLang/Pluto / l_udpserver

Function l_udpserver

src/lsocketlib.cpp:546–572  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

544}
545
546static int l_udpserver (lua_State *L) {
547 soup::SocketAddr addr = checkaddr(L, 1);
548 const auto port = addr.getPort();
549
550 StandaloneSocket& ss = pushsocket(L);
551 ss.sock = ss.sched.addSocket();
552 ss.udp = true;
553 ss.from_listener = true;
554 if (addr.ip.isZero()) {
555 if (l_unlikely(!ss.sock->udpBind6(port)))
556 return 0;
557 ss.recvLoopUdp(*ss.sock);
558#if SOUP_WINDOWS
559 auto ipv4_sock = ss.sched.addSocket();
560 if (l_likely(ipv4_sock->udpBind4(port)))
561 ss.recvLoopUdp(*ipv4_sock);
562#endif
563 }
564 else {
565 if (l_unlikely(!ss.sock->udpBind(addr.ip, addr.port)))
566 return 0;
567 }
568#if SOUP_WINDOWS
569 ss.sched.tick(); lua_assert(ss.sched.workers.size() >= 2);
570#endif
571 return 1;
572}
573
574static const luaL_Reg funcs_socket[] = {
575 {"connect", l_connect},

Callers

nothing calls this directly

Calls 3

checkaddrFunction · 0.85
recvLoopUdpMethod · 0.80
sizeMethod · 0.80

Tested by

no test coverage detected