33 lines
803 B
C
33 lines
803 B
C
#ifndef PING_TRACKER_H
|
|
#define PING_TRACKER_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
#include <time.h>
|
|
|
|
#define PING_TRACKER_SLOTS 128
|
|
|
|
typedef struct s_ping_tracker_slot {
|
|
struct timespec ts;
|
|
bool used;
|
|
bool acked;
|
|
} t_ping_tracker_slot;
|
|
|
|
typedef struct s_ping_tracker {
|
|
t_ping_tracker_slot slots[PING_TRACKER_SLOTS];
|
|
size_t nb_sent;
|
|
size_t nb_recv;
|
|
} t_ping_tracker;
|
|
|
|
void ping_tracker_init(t_ping_tracker *t);
|
|
void ping_tracker_record_send(t_ping_tracker *t, uint16_t seq, const
|
|
struct timespec *ts);
|
|
int64_t ping_tracker_record_recv(t_ping_tracker *t, uint16_t seq,
|
|
const struct timespec *ts);
|
|
|
|
#define ping_tracker_sent(t) ((t)->nb_sent)
|
|
#define ping_tracker_recv(t) ((t)->nb_recv)
|
|
#define ping_tracker_lost(t) ((t)->nb_sent - (t)->nb_recv)
|
|
|
|
#endif
|