Siena Fast Forwarding Documentation (v. 1.13.0)
btrietable.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 // Copyright (C) 2005 Antonio Carzaniga
11 //
12 // Siena is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // Siena is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with Siena. If not, see <http://www.gnu.org/licenses/>.
24 //
25 #ifndef SIENA_BTRIETABLE_H
26 #define SIENA_BTRIETABLE_H
27 
28 #include <cstddef>
29 
30 #include <siena/forwarding.h>
31 #include <siena/allocator.h>
32 
33 namespace siena {
34 
35 class BTriePredicate;
36 
61 class BTrieTable : public ForwardingTable {
62 public:
63  BTrieTable();
64 
65  virtual ~BTrieTable();
66 
67  virtual void ifconfig(if_t, const predicate &);
68 
69  virtual void match(const message &, MatchHandler &) const;
70  virtual void match(const message &, MatchMessageHandler &) const;
71 
72  virtual void clear();
73  virtual void clear_recycle();
74 
75  virtual size_t allocated_bytesize() const;
76  virtual size_t bytesize() const;
77 
78 protected:
84  FTAllocator memory;
85 
90  BTriePredicate * plist;
91 };
92 
93 } // end namespace siena
94 
95 #endif