• Main Page
  • Classes
  • Files
  • File List

/Users/yzchen/ns/ns-allinone-2.33/ns-2.33/dsr/cache_stats.h

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__ */

Generated on Tue Aug 10 2010 16:16:07 for ns-2.33 by  doxygen 1.7.1