Siena Fast Forwarding Documentation (v. 1.13.0)
bctable.h
1 // -*- C++ -*-
2 //
3 // This file is part of Siena, a wide-area event notification system.
4 // See http://www.inf.usi.ch/carzaniga/siena/
5 //
6 // Authors: Antonio Carzaniga
7 // See the file AUTHORS for full details.
8 //
9 // Copyright (C) 2001-2003 University of Colorado
10 //
11 // Siena is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // Siena is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with Siena. If not, see <http://www.gnu.org/licenses/>.
23 //
24 #ifndef SIENA_BCTABLE_H
25 #define SIENA_BCTABLE_H
26 
27 #ifdef HAVE_CONFIG_H
28 #include "config.h"
29 #else
30 #define CONFIG_BLOOM_FILTER_SIZE 256
31 #endif
32 
33 #include <siena/forwarding.h>
34 #include <siena/allocator.h>
35 #include <siena/btable.h>
36 
37 namespace siena {
38 
39 class BCFilterList;
40 
53 class BCTable : public BTable {
54 public:
55  BCTable();
56  virtual ~BCTable();
57 
58  virtual void consolidate();
59  virtual void match(const message &, MatchHandler &) const;
60 
61 private:
66  BCFilterList * positions[CONFIG_BLOOM_FILTER_SIZE];
67  unsigned int f_counter;
68  unsigned int if_counter;
69 };
70 
71 } // end namespace siena
72 
73 #endif