Alex 'AdUser' Z
9 years ago
2 changed files with 67 additions and 0 deletions
@ -0,0 +1,51 @@
|
||||
#include "common.h" |
||||
#include "matches.h" |
||||
|
||||
bool |
||||
f2b_matches_create(f2b_matches_t *m, size_t max) { |
||||
assert(m != NULL); |
||||
assert(max != 0); |
||||
|
||||
if ((m->times = calloc(max, sizeof(time_t))) == NULL) |
||||
return false; |
||||
|
||||
m->used = 0; |
||||
m->max = max; |
||||
return true; |
||||
} |
||||
|
||||
void |
||||
f2b_matches_destroy(f2b_matches_t *m) { |
||||
assert(m != NULL); |
||||
|
||||
FREE(m->times); |
||||
m->used = 0; |
||||
m->max = 0; |
||||
} |
||||
|
||||
bool |
||||
f2b_matches_append(f2b_matches_t *m, time_t t) { |
||||
assert(m != NULL); |
||||
|
||||
if (m->used >= m->max) |
||||
return false; |
||||
|
||||
m->times[m->used] = t; |
||||
m->used++; |
||||
return true; |
||||
} |
||||
|
||||
void |
||||
f2b_matches_expire(f2b_matches_t *m, time_t t) { |
||||
assert(m != NULL); |
||||
|
||||
for (size_t i = 0; i < m->used; ) { |
||||
if (m->times[i] > t) { |
||||
i++; |
||||
continue; |
||||
} |
||||
m->used--; |
||||
m->times[i] = m->times[m->used]; |
||||
m->times[m->used] = 0; |
||||
} |
||||
} |
@ -0,0 +1,16 @@
|
||||
#ifndef F2B_MATCHES_H_ |
||||
#define F2B_MATCHES_H_ |
||||
|
||||
typedef struct { |
||||
size_t max; |
||||
size_t used; |
||||
time_t *times; |
||||
} f2b_matches_t; |
||||
|
||||
bool f2b_matches_create (f2b_matches_t *m, size_t max); |
||||
void f2b_matches_destroy(f2b_matches_t *m); |
||||
|
||||
bool f2b_matches_append (f2b_matches_t *m, time_t t); |
||||
void f2b_matches_expire (f2b_matches_t *m, time_t t); |
||||
|
||||
#endif /* F2B_MATCHES_H_ */ |
Loading…
Reference in new issue