MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / xs_socket_write

Function xs_socket_write

modules/network/socket/qca4020/modSocket.c:674–781  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

672}
673
674void xs_socket_write(xsMachine *the)
675{
676 xsSocket xss = xsmcGetHostData(xsThis);
677 int argc = xsmcArgc;
678 uint8_t *dst;
679 uint16_t available, needed = 0;
680 unsigned char pass, arg;
681
682 if ((NULL == xss) || xss->done)
683 xsUnknownError("write on closed socket");
684
685 if (kUDP == xss->kind) {
686 char temp[64];
687
688 xsmcToStringBuffer(xsArg(0), temp, sizeof(temp));
689
690 int len = xsmcGetArrayBufferLength(xsArg(2));
691 uint8_t *buf = xsmcToArrayBuffer(xsArg(2));
692
693 struct sockaddr_in dest_addr = { 0 };
694
695 int port = xsmcToInteger(xsArg(1));
696
697 dest_addr.sin_family = AF_INET;
698 dest_addr.sin_port = htons(port);
699 inet_pton(AF_INET, temp, &dest_addr.sin_addr.s_addr);
700
701 int result = sendto(xss->skt, (char*)buf, len, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
702 if (result < 0)
703 xsUnknownError("sendto failed");
704
705 modInstrumentationAdjust(NetworkBytesWritten, len);
706
707 return;
708 }
709
710 if (kRAW == xss->kind) {
711 char temp[64];
712
713 xsmcToStringBuffer(xsArg(0), temp, sizeof(temp));
714
715 int len = xsmcGetArrayBufferLength(xsArg(1));
716 uint8_t *buf = xsmcToArrayBuffer(xsArg(1));
717
718 struct sockaddr_in dest_addr = { 0 };
719 dest_addr.sin_family = AF_INET;
720 inet_pton(AF_INET, temp, &dest_addr.sin_addr.s_addr);
721
722 int result = sendto(xss->skt, (char*)buf, len, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
723 if (result < 0)
724 xsUnknownError("sendto failed");
725
726 modInstrumentationAdjust(NetworkBytesWritten, len);
727 return;
728 }
729
730 available = sizeof(xss->writeBuf) - xss->writeBytes;
731 if (0 == argc) {

Callers

nothing calls this directly

Calls 1

doFlushWriteFunction · 0.70

Tested by

no test coverage detected