summaryrefslogtreecommitdiff
path: root/src/packet_cache.h
blob: 5d2535c500fab1414a2e67e458b2d06fc0ce5b33 (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
#pragma once

#include <al/array.h>

#include "util/packet.h"
#include "util/thread/thread.h"

struct nn_packet_cache {
    array(struct nn_packet *) cache;
    u32 flush;
    bool disabled;
    struct nn_cond cond;
    struct nn_mutex mutex;
};

void nn_packet_cache_init(struct nn_packet_cache *cache, u32 size);
bool nn_packet_cache_available(struct nn_packet_cache *cache);
void nn_packet_cache_send_packet(struct nn_packet_cache *cache, struct nn_packet *packet);
void nn_packet_cache_flush(struct nn_packet_cache *cache);
bool nn_packet_cache_wait(struct nn_packet_cache *cache, u32 *count);
struct nn_packet *nn_packet_cache_at(struct nn_packet_cache *cache, u32 index);
void nn_packet_cache_unlock(struct nn_packet_cache *cache);
void nn_packet_cache_disable(struct nn_packet_cache *cache);
void nn_packet_cache_enable(struct nn_packet_cache *cache);
void nn_packet_cache_free(struct nn_packet_cache *cache);