Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2532b5e

Browse files
committed
Renamed close handle API, updated README
1 parent 0501f1c commit 2532b5e

File tree

6 files changed

+45
-16
lines changed

6 files changed

+45
-16
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.POSIX:
2-
CFLAGS=-std=c99 -Wall -Wextra -Werror -pedantic -D_DEFAULT_SOURCE=200809L -ggdb -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer -pg
2+
CFLAGS=-std=c99 -Wall -Wextra -Werror -pedantic -D_DEFAULT_SOURCE=200809L
33

44
echo-server: examples/echo_server.c ev.h
55
$(CC) $(CFLAGS) examples/echo_server.c -o echo_server

README.md

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,43 @@ Lightweight event-driven hello world TCP server
3535
#include <stdlib.h>
3636
#include "../ev_tcp.h"
3737

38+
#define HOST "127.0.0.1"
39+
#define PORT 5959
40+
#define BACKLOG 128
41+
42+
static void on_close(ev_tcp_handle *client, int err) {
43+
(void) client;
44+
if (err == EV_TCP_SUCCESS)
45+
printf("Connection closed\n");
46+
else
47+
printf("Connection closed: %s\n", ev_tcp_err(err));
48+
free(client);
49+
}
50+
51+
static void on_write(ev_tcp_handle *client) {
52+
(void) client;
53+
printf("Written response\n");
54+
}
55+
3856
static void on_data(ev_tcp_handle *client) {
3957
printf("Received %li bytes\n", client->buffer.size);
4058
if (strncmp(client->buffer.buf, "quit", 4) == 0)
41-
ev_tcp_close_connection(client);
59+
ev_tcp_close_handle(client);
4260
else
43-
// If using TLS encryption
44-
// ev_tls_tcp_write(client);
45-
ev_tcp_write(client);
61+
// Enqueue a write of the buffer content for the next loop cycle
62+
ev_tcp_enqueue_write(client);
63+
// If want to respond on the same loop cycle
64+
// ev_tcp_write(client);
4665
}
4766

4867
static void on_connection(ev_tcp_handle *server) {
4968
ev_tcp_handle *client = malloc(sizeof(*client));
50-
iev_tcp_server_accept(server, client, on_data);
69+
int err = ev_tcp_server_accept(server, client, on_data, on_write);
70+
if (err < 0)
71+
free(client);
72+
else
73+
ev_tcp_handle_set_on_close(client, on_close);
74+
5175
}
5276

5377
int main(void) {
@@ -63,7 +87,9 @@ int main(void) {
6387
// };
6488
// tls_opt.protocols = EV_TLSv1_2|EV_TLSv1_3;
6589
// ev_tcp_server_set_tls(&server, &tls_opt);
66-
ev_tcp_server_listen(&server, "127.0.0.1", 5959, on_connection);
90+
int err = ev_tcp_server_listen(&server, HOST, PORT, on_connection);
91+
if (err < 0)
92+
exit(EXIT_FAILURE);
6793
// Blocking call
6894
ev_tcp_server_run(&server);
6995
// This could be registered to a SIGINT|SIGTERM signal notification

ev_tcp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ ssize_t ev_tcp_write(ev_tcp_handle *);
284284
* Close a connection by removing the client FD from the underlying ev_context
285285
* and closing it, free all resources allocated
286286
*/
287-
void ev_tcp_close_connection(ev_tcp_handle *);
287+
void ev_tcp_close_handle(ev_tcp_handle *);
288288

289289
/*
290290
* Just a simple helper function to retrieve a text explanation of the common
@@ -877,7 +877,7 @@ ssize_t ev_tcp_write(ev_tcp_handle *client) {
877877
#endif
878878
}
879879

880-
void ev_tcp_close_connection(ev_tcp_handle *handle) {
880+
void ev_tcp_close_handle(ev_tcp_handle *handle) {
881881
ev_connection *c = handle->c;
882882
char *buf = handle->buffer.buf;
883883
#ifdef HAVE_OPENSSL

examples/ev_tcp_server.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ static void on_connection(ev_tcp_handle *server) {
3838
else
3939
fprintf(stderr, "Error occured:%s\n", ev_tcp_err(err));
4040
}
41+
free(client);
42+
} else {
43+
ev_tcp_handle_set_on_close(client, on_close);
4144
}
42-
ev_tcp_handle_set_on_close(client, on_close);
4345
}
4446

4547
int main(void) {

examples/ev_tcp_server_stats.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ static void on_close(ev_tcp_handle *client, int err) {
2424
static void on_data(ev_tcp_handle *client) {
2525
printf("Received %li bytes\n", client->buffer.size);
2626
if (strncmp(client->buffer.buf, "quit", 4) == 0) {
27-
ev_tcp_close_connection(client);
27+
ev_tcp_close_handle(client);
2828
--connections;
2929
} else {
3030
(void) ev_tcp_write(client);
@@ -37,9 +37,9 @@ static void on_connection(ev_tcp_handle *server) {
3737
if ((err = ev_tcp_server_accept(server, client, on_data, NULL)) < 0) {
3838
if (err < 0) {
3939
if (err == -1)
40-
fprintf(stderr, "Something went wrong %s\n", strerror(errno));
40+
fprintf(stderr, "Error occured: %s\n", strerror(errno));
4141
else
42-
fprintf(stderr, "Something went wrong %s\n", ev_tcp_err(err));
42+
fprintf(stderr, "Error occured: %s\n", ev_tcp_err(err));
4343
}
4444
} else {
4545
ev_tcp_handle_set_on_close(client, on_close);
@@ -57,9 +57,10 @@ int main(void) {
5757
int err = ev_tcp_server_listen(&server, HOST, PORT, on_connection);
5858
if (err < 0) {
5959
if (err == -1)
60-
fprintf(stderr, "Something went wrong %s\n", strerror(errno));
60+
fprintf(stderr, "Error occured: %s\n", strerror(errno));
6161
else
62-
fprintf(stderr, "Something went wrong %s\n", ev_tcp_err(err));
62+
fprintf(stderr, "Error occured: %s\n", ev_tcp_err(err));
63+
exit(EXIT_FAILURE);
6364
}
6465

6566
printf("Listening on %s:%i\n", HOST, PORT);

examples/ev_tls_tcp_server.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ static void on_close(ev_tcp_handle *client, int err) {
2020
static void on_data(ev_tcp_handle *client) {
2121
printf("Received %li bytes\n", client->buffer.size);
2222
if (strncmp(client->buffer.buf, "quit", 4) == 0) {
23-
ev_tcp_close_connection(client);
23+
ev_tcp_close_handle(client);
2424
} else {
2525
(void) ev_tcp_write(client);
2626
}

0 commit comments

Comments
 (0)