1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#include "platform.h"
C_Errno_t(C_Int_t) Socket_accept (C_Sock_t s, Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
MLton_initSockets ();
return accept (s, (struct sockaddr*)addr, (socklen_t*)addrlen);
}
C_Errno_t(C_Int_t) Socket_bind (C_Sock_t s, Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
return bind (s, (const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Errno_t(C_Int_t) Socket_close(C_Sock_t s) {
#ifdef __MINGW32__
return closesocket(s);
#else
return close(s);
#endif
}
C_Errno_t(C_Int_t) Socket_connect (C_Sock_t s, Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
return connect (s, (const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Int_t Socket_familyOfAddr(Vector(Word8_t) addr) {
return ((const struct sockaddr*)addr)->sa_family;
}
C_Errno_t(C_Int_t) Socket_listen (C_Sock_t s, C_Int_t backlog) {
MLton_initSockets ();
return listen (s, backlog);
}
C_Errno_t(C_SSize_t)
Socket_recv (C_Sock_t s, Array(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags) {
MLton_initSockets ();
return MLton_recv (s, (void*)((char *)msg + start), len, flags);
}
C_Errno_t(C_SSize_t)
Socket_recvFrom (C_Sock_t s, Array(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags,
Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
MLton_initSockets ();
return MLton_recvfrom (s, (void*)((char *)msg + start), len, flags,
(struct sockaddr*)addr, (socklen_t*)addrlen);
}
static inline C_Errno_t(C_SSize_t)
Socket_send (C_Sock_t s, Pointer msg,
C_Int_t start, C_Size_t len, C_Int_t flags) {
MLton_initSockets ();
return send (s, (void*)((char *)msg + start), len, flags);
}
C_Errno_t(C_SSize_t)
Socket_sendArr (C_Sock_t s, Array(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags) {
return Socket_send (s, (Pointer)msg, start, len, flags);
}
C_Errno_t(C_SSize_t)
Socket_sendVec (C_Sock_t s, Vector(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags) {
return Socket_send (s, (Pointer)msg, start, len, flags);
}
static inline C_Errno_t(C_SSize_t)
Socket_sendTo (C_Sock_t s, Pointer msg,
C_Int_t start, C_Size_t len, C_Int_t flags,
Vector(Word8_t) addr, C_Socklen_t addrlen) {
MLton_initSockets ();
return sendto (s, (void*)((char *)msg + start), len, flags,
(const struct sockaddr*)addr, (socklen_t)addrlen);
}
C_Errno_t(C_SSize_t)
Socket_sendArrTo (C_Sock_t s, Array(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags,
Vector(Word8_t) addr, C_Socklen_t addrlen) {
return Socket_sendTo (s, (Pointer)msg, start, len, flags, addr, addrlen);
}
C_Errno_t(C_SSize_t)
Socket_sendVecTo (C_Sock_t s, Vector(Word8_t) msg,
C_Int_t start, C_Size_t len, C_Int_t flags,
Vector(Word8_t) addr, C_Socklen_t addrlen) {
return Socket_sendTo (s, (Pointer)msg, start, len, flags, addr, addrlen);
}
C_Errno_t(C_Int_t) Socket_shutdown (C_Sock_t s, C_Int_t how) {
MLton_initSockets ();
return shutdown (s, how);
}
C_Errno_t(C_Int_t)
Socket_Ctl_getSockOpt (C_Sock_t s, C_Int_t level, C_Int_t optname,
Array(Word8_t) optval, Ref(C_Socklen_t) optlen) {
MLton_initSockets ();
return getsockopt (s, level, optname, (void*)optval, (socklen_t*)optlen);
}
C_Errno_t(C_Int_t)
Socket_Ctl_setSockOpt (C_Sock_t s, C_Int_t level, C_Int_t optname,
Vector(Word8_t) optval, C_Socklen_t optlen) {
MLton_initSockets ();
return setsockopt (s, level, optname, (const void*)optval, (socklen_t)optlen);
}
C_Errno_t(C_Int_t)
Socket_Ctl_getIOCtl (C_Sock_t s, C_Int_t request, Array(Word8_t) argp) {
MLton_initSockets ();
return ioctl (s, request, (void*)argp);
}
C_Errno_t(C_Int_t)
Socket_Ctl_setIOCtl (C_Sock_t s, C_Int_t request, Vector(Word8_t) argp) {
MLton_initSockets ();
return ioctl (s, request, (const void*)argp);
}
C_Errno_t(C_Int_t) Socket_Ctl_getPeerName (C_Sock_t s, Array(Word8_t) name, Ref(C_Socklen_t) namelen) {
MLton_initSockets ();
return getpeername (s, (struct sockaddr*)name, (socklen_t*)namelen);
}
C_Errno_t(C_Int_t) Socket_Ctl_getSockName (C_Sock_t s, Array(Word8_t) name, Ref(C_Socklen_t) namelen) {
MLton_initSockets ();
return getsockname (s, (struct sockaddr*)name, (socklen_t*)namelen);
}
|