cache_stats.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * cache_stats.h
  3.  * Copyright (C) 2000 by the University of Southern California
  4.  * $Id: cache_stats.h,v 1.4 2005/08/25 18:58:04 johnh Exp $
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License,
  8.  * version 2, as published by the Free Software Foundation.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License along
  16.  * with this program; if not, write to the Free Software Foundation, Inc.,
  17.  * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  18.  *
  19.  *
  20.  * The copyright of this module includes the following
  21.  * linking-with-specific-other-licenses addition:
  22.  *
  23.  * In addition, as a special exception, the copyright holders of
  24.  * this module give you permission to combine (via static or
  25.  * dynamic linking) this module with free software programs or
  26.  * libraries that are released under the GNU LGPL and with code
  27.  * included in the standard release of ns-2 under the Apache 2.0
  28.  * license or under otherwise-compatible licenses with advertising
  29.  * requirements (or modified versions of such code, with unchanged
  30.  * license).  You may copy and distribute such a system following the
  31.  * terms of the GNU GPL for this module and the licenses of the
  32.  * other code concerned, provided that you include the source code of
  33.  * that other code when and as the GNU GPL requires distribution of
  34.  * source code.
  35.  *
  36.  * Note that people who make modified versions of this module
  37.  * are not obligated to grant this special exception for their
  38.  * modified versions; it is their choice whether to do so.  The GNU
  39.  * General Public License gives permission to release a modified
  40.  * version without this exception; this exception also makes it
  41.  * possible to release a modified version which carries forward this
  42.  * exception.
  43.  *
  44.  */
  45. // Other copyrights might apply to parts of this software and are so
  46. // noted when applicable.
  47. //
  48. // Ported from CMU/Monarch's code, appropriate copyright applies.  
  49. #ifndef __cache_stats__
  50. #define __cache_stats__
  51. #include "routecache.h"
  52. #define ACTION_ADD_ROUTE        1
  53. #define ACTION_NOTICE_ROUTE     2
  54. #define ACTION_FIND_ROUTE       3
  55. #define ACTION_DEAD_LINK        4
  56. #define ACTION_EVICT            5
  57. #define ACTION_CHECK_CACHE      6
  58. static char *action_name [] = {"",
  59.                               "add-route", "notice-route", "find-route",
  60.                               "dead-link", "evicting-route", "check-cache"};
  61. class cache_stats {
  62. public:
  63.         void reset() {
  64.                 route_add_count = 0;
  65.                 route_add_bad_count = 0;
  66.                 subroute_add_count = 0;
  67.                 subroute_add_bad_count = 0;
  68.                 link_add_tested = 0;
  69.                 route_notice_count = 0;
  70.                 route_notice_bad_count = 0;
  71.                 subroute_notice_count = 0;
  72.                 subroute_notice_bad_count = 0;
  73.                 link_notice_tested = 0;
  74.                 route_find_count = 0;
  75. route_find_for_me = 0;
  76.                 route_find_bad_count = 0;
  77.                 route_find_miss_count = 0;
  78.                 subroute_find_count = 0;
  79.                 subroute_find_bad_count = 0;
  80. link_add_count = 0;
  81. link_add_bad_count = 0;
  82. link_notice_count = 0;
  83. link_notice_bad_count = 0;
  84. link_find_count = 0;
  85. link_find_bad_count = 0;
  86. link_good_time = 0.0;
  87.         }
  88.                 
  89.         int     route_add_count;
  90.         int     route_add_bad_count;
  91.         int     subroute_add_count;
  92.         int     subroute_add_bad_count;
  93.         int     link_add_tested;
  94.         int     route_notice_count;
  95.         int     route_notice_bad_count;
  96.         int     subroute_notice_count;
  97.         int     subroute_notice_bad_count;
  98.         int     link_notice_tested;
  99.         int     route_find_count;
  100.         int     route_find_for_me;
  101.         int     route_find_bad_count;
  102.         int     route_find_miss_count;
  103.         int     subroute_find_count;
  104.         int     subroute_find_bad_count;
  105. // extras for the Link-State Cache
  106. int link_add_count;
  107. int link_add_bad_count;
  108. int link_notice_count;
  109. int link_notice_bad_count;
  110. int link_find_count;
  111. int link_find_bad_count;
  112. double     link_good_time;
  113. };
  114. /*===============================================================
  115.   Handler to collect statistics once per second.
  116. ----------------------------------------------------------------*/
  117. class MobiHandler : public Handler {
  118. public:
  119.         MobiHandler(RouteCache *C) {
  120.                 interval = 1.0;
  121.                 cache = C;
  122.         }
  123.         void start() {
  124.                 Scheduler::instance().schedule(this, &intr, 1.0);
  125.         }
  126.         void handle(Event *);
  127. private:
  128.         double interval;
  129.         Event intr;
  130.         RouteCache *cache;
  131. };
  132. #endif /* __cache_stats_h__ */