blob: b6d2c70e20a8bdd544c035267c83f6e32661057c [file] [log] [blame]
#ifndef AOS_COMMON_NETWORK_SOCKET_H_
#define AOS_COMMON_NETWORK_SOCKET_H_
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include "aos/common/Configuration.h"
#include "aos/common/time.h"
namespace aos {
class Socket {
public:
int LastStatus() const { return last_ret_; }
int Send(const void *buf, int length);
int Recv(void *buf, int length);
int Recv(void *buf, int length, long usec); // returns 0 if timed out
protected:
int Connect(NetworkPort port, const char *address, int type = SOCK_DGRAM);
Socket();
~Socket();
// Resets socket_ and last_ret_.
void Reset();
union {
sockaddr_in in;
sockaddr addr;
} addr_; // filled in by Connect
int socket_;
int last_ret_;
};
} // namespace aos
#endif // AOS_COMMON_NETWORK_SOCKET_H_