Lines Matching refs:sock
412 deSocket* sock = (deSocket*)deCalloc(sizeof(deSocket));
413 if (!sock)
414 return sock;
422 sock->stateLock = deMutex_create(0);
423 sock->handle = DE_INVALID_SOCKET_HANDLE;
424 sock->state = DE_SOCKETSTATE_CLOSED;
426 return sock;
429 void deSocket_destroy (deSocket* sock)
431 if (sock->state != DE_SOCKETSTATE_CLOSED)
432 deSocket_close(sock);
434 deMutex_destroy(sock->stateLock);
435 deFree(sock);
438 deSocketState deSocket_getState (const deSocket* sock)
440 return sock->state;
443 deUint32 deSocket_getOpenChannels (const deSocket* sock)
445 return sock->openChannels;
448 deBool deSocket_setFlags (deSocket* sock, deUint32 flags)
450 deSocketHandle fd = sock->handle;
452 if (sock->state == DE_SOCKETSTATE_CLOSED)
496 deBool deSocket_listen (deSocket* sock, const deSocketAddress* address)
503 if (sock->state != DE_SOCKETSTATE_CLOSED)
511 sock->handle = socket(bsdAddr->sa_family, deSocketTypeToBsdType(address->type), deSocketProtocolToBsdProtocol(address->protocol));
512 if (!deSocketHandleIsValid(sock->handle))
515 sock->state = DE_SOCKETSTATE_DISCONNECTED;
520 setsockopt(sock->handle, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuseVal, (int)sizeof(reuseVal));
524 if (bind(sock->handle, bsdAddr, (NativeSocklen)bsdAddrLen) != 0)
526 deSocket_close(sock);
531 if (listen(sock->handle, backlogSize) != 0)
533 deSocket_close(sock);
537 sock->state = DE_SOCKETSTATE_LISTENING;
542 deSocket* deSocket_accept (deSocket* sock, deSocketAddress* clientAddress)
552 newFd = accept(sock->handle, bsdAddr, &bsdAddrLen);
578 deBool deSocket_connect (deSocket* sock, const deSocketAddress* address)
589 sock->handle = socket(bsdAddr->sa_family, deSocketTypeToBsdType(address->type), deSocketProtocolToBsdProtocol(address->protocol));
590 if (!deSocketHandleIsValid(sock->handle))
594 if (connect(sock->handle, bsdAddr, bsdAddrLen) != 0)
597 closesocket(sock->handle);
599 close(sock->handle);
601 sock->handle = DE_INVALID_SOCKET_HANDLE;
605 sock->state = DE_SOCKETSTATE_CONNECTED;
606 sock->openChannels = DE_SOCKETCHANNEL_BOTH;
611 deBool deSocket_shutdown (deSocket* sock, deUint32 channels)
615 deMutex_lock(sock->stateLock);
617 if (sock->state == DE_SOCKETSTATE_DISCONNECTED ||
618 sock->state == DE_SOCKETSTATE_CLOSED)
620 deMutex_unlock(sock->stateLock);
627 channels &= sock->openChannels;
631 deMutex_unlock(sock->stateLock);
646 if (shutdown(sock->handle, how) == 0)
657 deMutex_unlock(sock->stateLock);
673 if (shutdown(sock->handle, how) == 0)
681 deMutex_unlock(sock->stateLock);
688 sock->openChannels &= ~closedChannels;
689 if (sock->openChannels == 0)
690 sock->state = DE_SOCKETSTATE_DISCONNECTED;
692 deMutex_unlock(sock->stateLock);
696 deBool deSocket_close (deSocket* sock)
698 deMutex_lock(sock->stateLock);
700 if (sock->state == DE_SOCKETSTATE_CLOSED)
702 deMutex_unlock(sock->stateLock);
707 if (sock->state == DE_SOCKETSTATE_LISTENING)
710 shutdown(sock->handle, SHUT_RDWR);
715 if (closesocket(sock->handle) != 0)
718 if (close(sock->handle) != 0)
721 sock->state = DE_SOCKETSTATE_CLOSED;
722 sock->handle = DE_INVALID_SOCKET_HANDLE;
723 sock->openChannels = 0;
725 deMutex_unlock(sock->stateLock);
761 DE_INLINE void deSocket_setChannelsClosed (deSocket* sock, deUint32 channels)
763 deMutex_lock(sock->stateLock);
765 sock->openChannels &= ~channels;
766 if (sock->openChannels == 0)
767 sock->state = DE_SOCKETSTATE_DISCONNECTED;
769 deMutex_unlock(sock->stateLock);
772 deSocketResult deSocket_send (deSocket* sock, const void* buf, size_t bufSize, size_t* numSentPtr)
774 int numSent = (int)send(sock->handle, (const char*)buf, (NativeSize)bufSize, 0);
782 deSocket_setChannelsClosed(sock, DE_SOCKETCHANNEL_SEND);
784 deSocket_setChannelsClosed(sock, DE_SOCKETCHANNEL_BOTH);
789 deSocketResult deSocket_receive (deSocket* sock, void* buf, size_t bufSize, size_t* numReceivedPtr)
791 int numRecv = (int)recv(sock->handle, (char*)buf, (NativeSize)bufSize, 0);
799 deSocket_setChannelsClosed(sock, DE_SOCKETCHANNEL_RECEIVE);
801 deSocket_setChannelsClosed(sock, DE_SOCKETCHANNEL_BOTH);