blob: 8035ee12ccffea495c994b8e96bb6437a6f71712 (
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#pragma once
#include <nnwt/event_loop.h>
#include <nnwt/packet_stream.h>
#include <nnwt/packet_pool.h>
#include <nnwt/signal.h>
#include "../cache/entry.h"
//#define LIANA_SERVER_LOOP
struct lia_node_connection {
u32 id;
struct nn_packet *packet;
struct nn_packet_stream *stream;
bool errored;
bool disconnected;
bool ref;
struct lia_server_handler *handler;
struct cch_handle handle;
u64 seek_pos;
struct nn_thread thread;
struct nn_signal signal;
struct nn_packet_pool pool;
struct lia_node *node;
};
enum {
LIANA_NODE_DURATION = 0,
LIANA_NODE_ERRORED
};
struct lia_node {
u32 id;
struct cch_entry *entry;
array(struct lia_node_connection *) requests;
array(struct lia_node_connection *) connections;
bool closed;
u64 duration;
struct lia_server *server;
void (*callback)(void *, u8, void *);
void *userdata;
// Temporary copy-paste from node_connection.
bool errored;
struct lia_server_handler *handler;
struct cch_handle handle;
struct nn_thread thread;
struct nn_signal signal;
};
struct lia_server {
struct nn_event_loop *loop;
u32 increment;
array(struct lia_node *) nodes;
array(struct nn_packet_stream *) dormant_connections;
};
bool lia_server_init(struct lia_server *server, struct nn_event_loop *loop);
void lia_server_add_stream(struct lia_server *server, struct nn_packet_stream *stream);
struct lia_node *lia_server_create_node(struct lia_server *server, struct cch_entry *entry);
void lia_node_get_duration(struct lia_node *node);
void lia_node_close(struct lia_node *node);
void lia_server_close(struct lia_server *server);
void lia_server_free(struct lia_server *server);
|