|
xorp
|
00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- 00002 00003 // Copyright (c) 2001-2009 XORP, Inc. 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License, Version 2, June 00007 // 1991 as published by the Free Software Foundation. Redistribution 00008 // and/or modification of this program under the terms of any other 00009 // version of the GNU General Public License is not permitted. 00010 // 00011 // This program is distributed in the hope that it will be useful, but 00012 // WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details, 00014 // see the GNU General Public License, Version 2, a copy of which can be 00015 // found in the XORP LICENSE.gpl file. 00016 // 00017 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; 00018 // http://xorp.net 00019 00020 // $XORP: xorp/fea/ifconfig_observer.hh,v 1.32 2008/10/02 21:56:47 bms Exp $ 00021 00022 #ifndef __FEA_IFCONFIG_OBSERVER_HH__ 00023 #define __FEA_IFCONFIG_OBSERVER_HH__ 00024 00025 #include "iftree.hh" 00026 #include "fea_data_plane_manager.hh" 00027 00028 class IfConfig; 00029 00030 00031 class IfConfigObserver { 00032 public: 00039 IfConfigObserver(FeaDataPlaneManager& fea_data_plane_manager) 00040 : _is_running(false), 00041 _ifconfig(fea_data_plane_manager.ifconfig()), 00042 _fea_data_plane_manager(fea_data_plane_manager) 00043 {} 00044 00048 virtual ~IfConfigObserver() {} 00049 00055 IfConfig& ifconfig() { return _ifconfig; } 00056 00062 FeaDataPlaneManager& fea_data_plane_manager() { return _fea_data_plane_manager; } 00063 00069 virtual bool is_running() const { return _is_running; } 00070 00077 virtual int start(string& error_msg) = 0; 00078 00085 virtual int stop(string& error_msg) = 0; 00086 00092 virtual void receive_data(const vector<uint8_t>& buffer) = 0; 00093 00094 protected: 00095 // Misc other state 00096 bool _is_running; 00097 00098 private: 00099 IfConfig& _ifconfig; 00100 FeaDataPlaneManager& _fea_data_plane_manager; 00101 }; 00102 00103 #endif // __FEA_IFCONFIG_OBSERVER_HH__