Files
cworker/works/handlers.c
2023-08-18 22:38:43 +02:00

75 lines
1.7 KiB
C

int handler4(int socket) {
int err = 0;
rcache_t cache;
jlexer_t lexer;
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
rcache_init(&cache, socket);
jlexer_init(&lexer, &cache);
char token[1024];
int type = 0;
while ((type = jlexer_gettoken(&lexer, token)) != JLEXTOK_END) {
printf("%d: %s\n", type, token);
}
printf("= %d: %s\n", type, token);
//rcache_destroy(&cache);
return 0;
}
int handler5(int socket) {
int err = 0;
rcache_t cache;
rcache_init(&cache, socket);
char c = '\0';
while ((c = rcache_getc(&cache)) != EOF) {
printf("%c", c);
if (c == '}') {
dprintf(socket, "good bay!\n");
close(socket);
}
}
rcache_destroy(&cache);
return 0;
}
int handler3(int socket) {
//struct timeval tv;
//tv.tv_sec = 1;
//tv.tv_usec = 0;
//setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
const int bsize = 1024;
char buffer[bsize];
ssize_t rsize = 0;
ssize_t tsize = 0;
while(true) {
memset(buffer, '\0', bsize);
rsize = read(socket, buffer, bsize);
if (rsize < 0) {
log_debug("Socket error: %s", strerror(errno));
if (errno != EAGAIN) {
return -1;
}
} else if (rsize == 0) {
log_debug("Socket rsize is zero");
return 0;
} else {
tsize += rsize;
printf("%ld:%s\n", rsize, buffer);
}
}
return 0;
}