-
Notifications
You must be signed in to change notification settings - Fork 0
/
tcp_sock.h
30 lines (29 loc) · 1018 Bytes
/
tcp_sock.h
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
#include <atomic>
#include <sys/socket.h>
#include <arpa/inet.h>
class tcp_sock {
private:
int server_fd;
std::atomic<int> comm_fd; // communication socket fd
bool is_server;
int debug_level = 0;
struct sockaddr_in addr;
std::thread *recv_thread_ptr;
std::thread *listen_thread_ptr;
void (*ring_callback)(void);
void (*recv_callback)(const char *, size_t);
void* recv_thread(void);
void* listen_thread(void);
public:
tcp_sock(bool is_server, const char *ip_addr, uint16_t port);
~tcp_sock();
void set_debug_level(const int level);
void set_ring_callback(void (*func)(void));
void set_recv_callback(void (*func)(const char *, size_t));
void set_addr(const struct sockaddr_in *addr_in);
bool is_connected();
bool connect();
void disconnect();
void send(const char *buffer, size_t length);
int recv(char *buffer, size_t max_length);
};