stats.h
上传用户:chn_coc
上传日期:2007-12-20
资源大小:563k
文件大小:2k
源码类别:

P2P编程

开发平台:

Windows_Unix

  1. // ------------------------------------------------
  2. // File : stats.h
  3. // Date: 4-apr-2002
  4. // Author: giles
  5. // Desc: 
  6. //
  7. // (c) 2002 peercast.org
  8. // ------------------------------------------------
  9. // This program is free software; you can redistribute it and/or modify
  10. // it under the terms of the GNU General Public License as published by
  11. // the Free Software Foundation; either version 2 of the License, or
  12. // (at your option) any later version.
  13. // This program is distributed in the hope that it will be useful,
  14. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. // GNU General Public License for more details.
  17. // ------------------------------------------------
  18. #ifndef _STATS_H
  19. #define _STATS_H
  20. // ------------------------------------------------------
  21. class Stats
  22. {
  23. public:
  24. void clear();
  25. void update();
  26. enum STAT
  27. {
  28. NONE,
  29. PACKETSSTART,
  30. NUMQUERYIN,NUMQUERYOUT,
  31. NUMPINGIN,NUMPINGOUT,
  32. NUMPONGIN,NUMPONGOUT,
  33. NUMPUSHIN,NUMPUSHOUT,
  34. NUMHITIN,NUMHITOUT,
  35. NUMOTHERIN,NUMOTHEROUT,
  36. NUMDROPPED,
  37. NUMDUP,
  38. NUMACCEPTED,
  39. NUMOLD,
  40. NUMBAD,
  41. NUMHOPS1,NUMHOPS2,NUMHOPS3,NUMHOPS4,NUMHOPS5,NUMHOPS6,NUMHOPS7,NUMHOPS8,NUMHOPS9,NUMHOPS10,
  42. NUMPACKETSIN,
  43. NUMPACKETSOUT,
  44. NUMROUTED,
  45. NUMBROADCASTED,
  46. NUMDISCARDED,
  47. NUMDEAD,
  48. PACKETDATAIN,
  49. PACKETDATAOUT,
  50. PACKETSEND,
  51. BYTESIN,
  52. BYTESOUT,
  53. LOCALBYTESIN,
  54. LOCALBYTESOUT,
  55. MAX
  56. };
  57. bool writeVariable(class Stream &,const class String &);
  58. void clearRange(STAT s, STAT e)
  59. {
  60. for(int i=s; i<=e; i++)
  61. current[i] = 0;
  62. }
  63. void clear(STAT s) {current[s]=0;}
  64. void add(STAT s,int n=1) {current[s]+=n;}
  65. unsigned int getPerSecond(STAT s) {return perSec[s];}
  66. unsigned int getCurrent(STAT s) {return current[s];}
  67. unsigned int current[Stats::MAX],last[Stats::MAX],perSec[Stats::MAX];
  68. unsigned int lastUpdate;
  69. };
  70. extern Stats stats;
  71. #endif