1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-01-03 21:45:49 +00:00
transmission/libtransmission/history.h
Charles Kerr 677dc73eac
refactor: use GTest for running tests (#1383)
* refactor: use google-test on libtransmission tests
2020-08-11 13:11:55 -05:00

64 lines
1.5 KiB
C

/*
* This file Copyright (C) 2010-2014 Mnemosyne LLC
*
* It may be used under the GNU GPL versions 2 or 3
* or any future license endorsed by Mnemosyne LLC.
*
*/
#pragma once
#ifndef __TRANSMISSION__
#error only libtransmission should #include this header.
#endif
#include <time.h> /* time_t */
#include "tr-macros.h"
TR_BEGIN_DECLS
/**
* A generic short-term memory object that remembers how many times
* something happened over the last N seconds.
*
* For example, it could count how many are bytes transferred
* to estimate the speed over the last N seconds.
*/
enum
{
TR_RECENT_HISTORY_PERIOD_SEC = 60
};
typedef struct tr_recentHistory
{
/* these are PRIVATE IMPLEMENTATION details included for composition only.
* Don't access these directly! */
int newest;
struct
{
unsigned int n;
time_t date;
}
slices[TR_RECENT_HISTORY_PERIOD_SEC];
}
tr_recentHistory;
/**
* @brief add a counter to the recent history object.
* @param when the current time in sec, such as from tr_time()
* @param n how many items to add to the history's counter
*/
void tr_historyAdd(tr_recentHistory*, time_t when, unsigned int n);
/**
* @brief count how many events have occurred in the last N seconds.
* @param when the current time in sec, such as from tr_time()
* @param seconds how many seconds to count back through.
*/
unsigned int tr_historyGet(tr_recentHistory const*, time_t when, unsigned int seconds);
TR_END_DECLS