65 lines
1.3 KiB
C++
65 lines
1.3 KiB
C++
/**
|
|
* Copyright (C) ARM Limited 2010-2014. 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 <stddef.h>
|
|
|
|
#ifdef WIN32
|
|
typedef socklen_t int;
|
|
#else
|
|
#include <sys/socket.h>
|
|
#endif
|
|
|
|
class OlySocket {
|
|
public:
|
|
#ifndef WIN32
|
|
static int connect(const char* path, const size_t pathSize);
|
|
#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);
|
|
#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__
|