Siena Fast Forwarding Documentation (v. 1.13.0)
bddbtable.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_BDDBTABLE_H
26 #define SIENA_BDDBTABLE_H
27 
28 #include <cstddef>
29 
30 #include <siena/forwarding.h>
31 #include <siena/allocator.h>
32 
33 namespace siena {
34 
47 public:
48  virtual void consolidate();
49  virtual void ifconfig(if_t, const predicate &) = 0;
50  virtual void match(const message &, MatchHandler &) const = 0;
51  virtual void match(const message & m, MatchMessageHandler & p) const;
52  virtual size_t allocated_bytesize() const;
53  virtual size_t bytesize() const;
54  virtual void clear() = 0;
55  virtual void clear_recycle() = 0;
56 
57 protected:
63  FTAllocator memory;
64 };
65 
72 class BDDBTable : public BDDBTableBase {
73 public:
74  BDDBTable();
75  virtual ~BDDBTable();
76 
77  virtual void ifconfig(if_t, const predicate &);
78  virtual void match(const message &, MatchHandler &) const;
79 
80  virtual void clear();
81  virtual void clear_recycle();
82 
83 private:
84  class IFDescr;
85 
86  IFDescr * bddlist;
87 };
88 
95 class ZDDBTable : public BDDBTableBase {
96 public:
97  ZDDBTable();
98  virtual ~ZDDBTable();
99 
100  virtual void ifconfig(if_t, const predicate &);
101  virtual void match(const message &, MatchHandler &) const;
102 
103  virtual void clear();
104  virtual void clear_recycle();
105 
106 private:
107  class IFDescr;
108 
109  IFDescr * zddlist;
110 };
111 
112 }; // end namespace siena
113 
114 #endif