3b5fd576416f3ea9bd0b0fe91989a48e12756466
[metaproxy-moved-to-github.git] / src / filter_limit.hpp
1 /* This file is part of Metaproxy.
2    Copyright (C) 2005-2009 Index Data
3
4 Metaproxy is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free
6 Software Foundation; either version 2, or (at your option) any later
7 version.
8
9 Metaproxy is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19 #ifndef FILTER_LIMIT_HPP
20 #define FILTER_LIMIT_HPP
21
22 #include <boost/scoped_ptr.hpp>
23
24 #include "filter.hpp"
25
26 namespace metaproxy_1 {
27     namespace filter {
28         class Limit : public Base {
29             class Impl;
30             class Ses;
31             boost::scoped_ptr<Impl> m_p;
32         public:
33             Limit();
34             ~Limit();
35             void process(metaproxy_1::Package & package) const;
36             void configure(const xmlNode * ptr, bool test_only);
37         };
38     }
39 }
40
41 extern "C" {
42     extern struct metaproxy_1_filter_struct metaproxy_1_filter_limit;
43 }
44
45 class Yaz_bw {
46  public:
47     Yaz_bw(int sz);
48     ~Yaz_bw();
49     void add_bytes(int m);
50     int get_total();
51  private:
52     long m_sec;   // time of most recent bucket
53     int *m_bucket;
54     int m_ptr;
55     int m_size;
56 };
57 #endif
58
59 /*
60  * Local variables:
61  * c-basic-offset: 4
62  * c-file-style: "Stroustrup"
63  * indent-tabs-mode: nil
64  * End:
65  * vim: shiftwidth=4 tabstop=8 expandtab
66  */
67