00001 00002 /* 00003 * cache_stats.h 00004 * Copyright (C) 2000 by the University of Southern California 00005 * $Id: cache_stats.h,v 1.4 2005/08/25 18:58:04 johnh Exp $ 00006 * 00007 * This program is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU General Public License, 00009 * version 2, as published by the Free Software Foundation. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License along 00017 * with this program; if not, write to the Free Software Foundation, Inc., 00018 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 00019 * 00020 * 00021 * The copyright of this module includes the following 00022 * linking-with-specific-other-licenses addition: 00023 * 00024 * In addition, as a special exception, the copyright holders of 00025 * this module give you permission to combine (via static or 00026 * dynamic linking) this module with free software programs or 00027 * libraries that are released under the GNU LGPL and with code 00028 * included in the standard release of ns-2 under the Apache 2.0 00029 * license or under otherwise-compatible licenses with advertising 00030 * requirements (or modified versions of such code, with unchanged 00031 * license). You may copy and distribute such a system following the 00032 * terms of the GNU GPL for this module and the licenses of the 00033 * other code concerned, provided that you include the source code of 00034 * that other code when and as the GNU GPL requires distribution of 00035 * source code. 00036 * 00037 * Note that people who make modified versions of this module 00038 * are not obligated to grant this special exception for their 00039 * modified versions; it is their choice whether to do so. The GNU 00040 * General Public License gives permission to release a modified 00041 * version without this exception; this exception also makes it 00042 * possible to release a modified version which carries forward this 00043 * exception. 00044 * 00045 */ 00046 00047 // Other copyrights might apply to parts of this software and are so 00048 // noted when applicable. 00049 // 00050 // Ported from CMU/Monarch's code, appropriate copyright applies. 00051 00052 #ifndef __cache_stats__ 00053 #define __cache_stats__ 00054 00055 #include "routecache.h" 00056 00057 #define ACTION_ADD_ROUTE 1 00058 #define ACTION_NOTICE_ROUTE 2 00059 #define ACTION_FIND_ROUTE 3 00060 #define ACTION_DEAD_LINK 4 00061 #define ACTION_EVICT 5 00062 #define ACTION_CHECK_CACHE 6 00063 00064 static char *action_name [] = {"", 00065 "add-route", "notice-route", "find-route", 00066 "dead-link", "evicting-route", "check-cache"}; 00067 00068 class cache_stats { 00069 public: 00070 void reset() { 00071 route_add_count = 0; 00072 route_add_bad_count = 0; 00073 subroute_add_count = 0; 00074 subroute_add_bad_count = 0; 00075 link_add_tested = 0; 00076 00077 route_notice_count = 0; 00078 route_notice_bad_count = 0; 00079 subroute_notice_count = 0; 00080 subroute_notice_bad_count = 0; 00081 link_notice_tested = 0; 00082 00083 route_find_count = 0; 00084 route_find_for_me = 0; 00085 route_find_bad_count = 0; 00086 route_find_miss_count = 0; 00087 subroute_find_count = 0; 00088 subroute_find_bad_count = 0; 00089 00090 link_add_count = 0; 00091 link_add_bad_count = 0; 00092 link_notice_count = 0; 00093 link_notice_bad_count = 0; 00094 link_find_count = 0; 00095 link_find_bad_count = 0; 00096 00097 link_good_time = 0.0; 00098 00099 } 00100 00101 int route_add_count; 00102 int route_add_bad_count; 00103 int subroute_add_count; 00104 int subroute_add_bad_count; 00105 int link_add_tested; 00106 00107 int route_notice_count; 00108 int route_notice_bad_count; 00109 int subroute_notice_count; 00110 int subroute_notice_bad_count; 00111 int link_notice_tested; 00112 00113 int route_find_count; 00114 int route_find_for_me; 00115 int route_find_bad_count; 00116 int route_find_miss_count; 00117 int subroute_find_count; 00118 int subroute_find_bad_count; 00119 00120 // extras for the Link-State Cache 00121 int link_add_count; 00122 int link_add_bad_count; 00123 int link_notice_count; 00124 int link_notice_bad_count; 00125 int link_find_count; 00126 int link_find_bad_count; 00127 00128 double link_good_time; 00129 }; 00130 00131 00132 /*=============================================================== 00133 Handler to collect statistics once per second. 00134 ----------------------------------------------------------------*/ 00135 00136 class MobiHandler : public Handler { 00137 public: 00138 MobiHandler(RouteCache *C) { 00139 interval = 1.0; 00140 cache = C; 00141 } 00142 void start() { 00143 Scheduler::instance().schedule(this, &intr, 1.0); 00144 } 00145 void handle(Event *); 00146 private: 00147 double interval; 00148 Event intr; 00149 RouteCache *cache; 00150 }; 00151 00152 #endif /* __cache_stats_h__ */
1.4.6