You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.0 KiB
51 lines
1.0 KiB
#pragma once
|
|
|
|
#include <ev.h>
|
|
|
|
#define BUF_SIZE 4096
|
|
|
|
struct server {
|
|
int server_fd;
|
|
char server_buf[BUF_SIZE];
|
|
int server_buf_len;
|
|
struct server_read_ctx *server_read_ctx;
|
|
struct server_write_ctx *server_write_ctx;
|
|
struct remote *remote;
|
|
};
|
|
struct server_read_ctx {
|
|
ev_io server_read_io;
|
|
struct server *server;
|
|
};
|
|
struct server_write_ctx {
|
|
ev_io server_write_io;
|
|
struct server *server;
|
|
};
|
|
struct remote {
|
|
int remote_fd;
|
|
char remote_buf[BUF_SIZE];
|
|
int remote_buf_len;
|
|
struct remote_read_ctx *remote_read_ctx;
|
|
struct remote_write_ctx *remote_write_ctx;
|
|
struct server *server;
|
|
};
|
|
struct remote_read_ctx {
|
|
ev_io remote_read_io;
|
|
struct remote *remote;
|
|
};
|
|
struct remote_write_ctx {
|
|
ev_io remote_write_io;
|
|
struct remote *remote;
|
|
};
|
|
|
|
|
|
static void
|
|
accept_cb (EV_P_ ev_io *w, int revents);
|
|
static void
|
|
server_read_cb (EV_P_ ev_io *w, int revents);
|
|
static void
|
|
server_write_cb (EV_P_ ev_io *w, int revents);
|
|
static void
|
|
remote_read_cb (EV_P_ ev_io *w, int revents);
|
|
static void
|
|
remote_write_cb (EV_P_ ev_io *w, int revents);
|
|
|