xorp

crash_dump.hh

00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
00002 // vim:set sts=4 ts=8:
00003 
00004 // Copyright (c) 2006-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 
00022 #ifndef __BGP_CRASH_DUMP_HH__
00023 #define __BGP_CRASH_DUMP_HH__
00024 
00025 
00026 
00027 
00028 #include "libxorp/timeval.hh"
00029 
00030 class CrashDumper;
00031 
00032 class CrashDumpManager {
00033 public:
00034     CrashDumpManager();
00035     void register_dumper(CrashDumper *dumper);
00036     void unregister_dumper(CrashDumper *dumper);
00037     void crash_dump();
00038 
00039 private:
00040     list <CrashDumper*> _dumpers;
00041 };
00042 
00043 
00044 class CrashDumper {
00045 public:
00046     CrashDumper();
00047     virtual ~CrashDumper();
00048     virtual void crash_dump() const;
00049     virtual string dump_state() const;
00050     void log(const string& msg);
00051 private:
00052     static CrashDumpManager _mgr;
00053     vector <string> _log;
00054     vector <TimeVal> _logtimes;
00055     int _logfirst, _loglast;
00056 };
00057 
00058 #endif // __BGP_CRASH_DUMP_HH__
 All Classes Namespaces Functions Variables Typedefs Enumerations