blob: 5da7385091d3456859047932718b2ee53ab8ff4c (
plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#pragma once
#include <al/types.h>
#include <al/str.h>
#include <al/array.h>
#include "util/buffer.h"
#include "socket/socket.h"
#include "loop.h"
enum {
NNWT_LINE_PROCESSOR_SOCKET = 0,
NNWT_LINE_PROCESSOR_FD
};
enum {
NNWT_LINE_PROCESSOR_CONTINUE = 0,
NNWT_LINE_PROCESSOR_STOP
};
struct nn_line_processor_client {
ev_io event;
struct nn_socket sock;
size_t index;
struct nn_buffer buf;
size_t mark;
struct nn_line_processor *pro;
};
struct nn_line_processor {
struct nn_event_loop *loop;
u8 type;
ev_io event;
struct nn_socket *sock;
s32 fd;
str delim;
array(struct nn_line_processor_client *) clients;
u8 (*callback)(void *, str *line);
void *userdata;
};
void nn_line_processor_init(struct nn_line_processor *pro, str *delim);
void nn_line_processor_open_socket(struct nn_line_processor *pro, struct nn_socket *sock);
void nn_line_processor_open_fd(struct nn_line_processor *pro, s32 fd);
void nn_line_processor_run(struct nn_line_processor *pro, struct nn_event_loop *loop);
void nn_line_processor_stop(struct nn_line_processor *pro);
|