xorp

varrw.hh

00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
00002 // vim:set sts=4 ts=8:
00003 
00004 // Copyright (c) 2001-2011 XORP, Inc and Others
00005 //
00006 // This program is free software; you can redistribute it and/or modify
00007 // it under the terms of the GNU General Public License, Version 2, June
00008 // 1991 as published by the Free Software Foundation. Redistribution
00009 // and/or modification of this program under the terms of any other
00010 // version of the GNU General Public License is not permitted.
00011 // 
00012 // This program is distributed in the hope that it will be useful, but
00013 // WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details,
00015 // see the GNU General Public License, Version 2, a copy of which can be
00016 // found in the XORP LICENSE.gpl file.
00017 // 
00018 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
00019 // http://xorp.net
00020 
00021 // $XORP: xorp/policy/common/varrw.hh,v 1.19 2008/10/02 21:58:07 bms Exp $
00022 
00023 #ifndef __POLICY_BACKEND_VARRW_HH__
00024 #define __POLICY_BACKEND_VARRW_HH__
00025 
00026 #include "element_base.hh"
00027 
00028 
00029 
00040 class VarRW {
00041 public:
00042     typedef int Id;
00043     enum {
00044         VAR_TRACE   = 0,
00045         VAR_POLICYTAGS,
00046         VAR_FILTER_IM,
00047         VAR_FILTER_SM,
00048         VAR_FILTER_EX,
00049     VAR_TAG     = 5,
00050         VAR_PROTOCOL    = 10, // protocol specific vars start here
00051         VAR_MAX     = 32  // must be last
00052     };
00053 
00054     VarRW();
00055     virtual ~VarRW();
00056 
00074     virtual const Element& read(const Id& id) = 0;
00075 
00085     virtual void write(const Id& id, const Element& e) = 0;
00086 
00097     virtual void sync();
00098 
00103     void enable_trace(bool on);
00104 
00112     const Element& read_trace(const Id& id); 
00113 
00121     void write_trace(const Id& id, const Element& e);
00122 
00130     uint32_t trace();
00131 
00137     string tracelog();
00138 
00144     virtual string more_tracelog();
00145 
00146     void reset_trace();
00147 
00148 private:
00149     bool        _do_trace;
00150     uint32_t        _trace;
00151     ostringstream   _tracelog;
00152 };
00153 
00154 #endif // __POLICY_BACKEND_VARRW_HH__
 All Classes Namespaces Functions Variables Typedefs Enumerations