Log request number. More configurable keepalive with pdu/bw limits.
[yazpp-moved-to-github.git] / src / yaz-bw.cpp
1 /*
2  * Copyright (c) 2000-2003, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: yaz-bw.cpp,v 1.1 2003-10-01 13:13:51 adam Exp $
6  */
7
8 #include <time.h>
9 #include <yaz/log.h>
10 #include <yaz++/proxy.h>
11
12
13 Yaz_bw::Yaz_bw(int sz)
14 {
15     m_sec = 0;
16     m_size = sz;
17     m_bucket = new int[m_size];
18     m_ptr = 0;
19 }
20
21 Yaz_bw::~Yaz_bw()
22 {
23     delete [] m_bucket;
24 }
25
26 int Yaz_bw::get_total()
27 {
28     add_bytes(0);
29     int bw = 0;
30     int i;
31     for (i = 0; i<m_size; i++)
32         bw += m_bucket[i];
33     return bw;
34 }
35
36 void Yaz_bw::add_bytes(int b)
37 {
38     long now = time(0);
39
40     int d = now - m_sec;
41     if (d > m_size)
42         d = m_size;
43     while (--d >= 0)
44     {
45         if (++m_ptr == m_size)
46             m_ptr = 0;
47         m_bucket[m_ptr] = 0;
48     }
49     m_bucket[m_ptr] += b;
50     m_sec = now;
51 }
52