Siena Fast Forwarding Documentation (v. 1.13.0)
btable.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_BTABLE_H
26 #define SIENA_BTABLE_H
27 
28 #include <cstddef>
29 
30 #include <siena/forwarding.h>
31 #include <siena/allocator.h>
32 
33 namespace siena {
34 
35 class BPredicate;
36 
58 class BTable : public ForwardingTable {
59 public:
60  BTable();
61 
62  virtual ~BTable();
63 
64  virtual void ifconfig(if_t, const predicate &);
65 
66  virtual void match(const message &, MatchHandler &) const;
67  virtual void match(const message &, MatchMessageHandler &) const;
68 
69  virtual void clear();
70  virtual void clear_recycle();
71 
72  virtual size_t allocated_bytesize() const;
73  virtual size_t bytesize() const;
74 
75 protected:
81  FTAllocator memory;
82 
87  BPredicate * plist;
88 };
89 
101 class SortedBTable : public BTable {
102 public:
103  SortedBTable();
104 
105  virtual void consolidate();
106 };
107 
108 } // end namespace siena
109 
110 #endif