33 lines
766 B
C
33 lines
766 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
|
|
|
|
struct ping_tracker_slot {
|
|
struct timespec ts;
|
|
bool used;
|
|
bool acked;
|
|
};
|
|
|
|
struct ping_tracker {
|
|
struct ping_tracker_slot slots[PING_TRACKER_SLOTS];
|
|
size_t nb_sent;
|
|
size_t nb_recv;
|
|
};
|
|
|
|
void ping_tracker_init(struct ping_tracker *t);
|
|
void ping_tracker_record_send(struct ping_tracker *t, uint16_t seq, const
|
|
struct timespec *ts);
|
|
int64_t ping_tracker_record_recv(struct 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
|