/** * Copyright (C) ARM Limited 2010-2015. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __OLY_SOCKET_H__ #define __OLY_SOCKET_H__ #include #ifdef WIN32 typedef int socklen_t; #else #include #endif class OlySocket { public: #ifndef WIN32 static int connect(const char* path, const size_t pathSize, const bool calculateAddrlen = false); #endif OlySocket(int socketID); ~OlySocket(); void closeSocket(); void shutdownConnection(); void send(const char* buffer, int size); int receive(char* buffer, int size); int receiveNBytes(char* buffer, int size); int receiveString(char* buffer, int size); bool isValid() const { return mSocketID >= 0; } private: int mSocketID; }; class OlyServerSocket { public: OlyServerSocket(int port); #ifndef WIN32 OlyServerSocket(const char* path, const size_t pathSize, const bool calculateAddrlen = false); #endif ~OlyServerSocket(); int acceptConnection(); void closeServerSocket(); int getFd() { return mFDServer; } private: int mFDServer; void createServerSocket(int port); }; int socket_cloexec(int domain, int type, int protocol); int accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen); #endif //__OLY_SOCKET_H__