Stats.cpp
上传用户:czjinwang
上传日期:2007-01-12
资源大小:2484k
文件大小:5k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. /*============================================================================
  2.    Copyright (c) 1996
  3.   Hewlett-Packard Company
  4.   ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  5.   Permission to use, copy, modify, distribute and/or sell this software 
  6.   and/or its documentation is hereby granted without fee. User agrees 
  7.   to display the above copyright notice and this license notice in all 
  8.   copies of the software and any documentation of the software. User 
  9.   agrees to assume all liability for the use of the software; Hewlett-Packard 
  10.   makes no representations about the suitability of this software for any 
  11.   purpose. It is provided "AS-IS without warranty of any kind,either express 
  12.   or implied. User hereby grants a royalty-free license to any and all 
  13.   derivatives based upon this software code base. 
  14. =============================================================================*/
  15. #include "stdafx.h"
  16. #include "browser.h"
  17. #include "Stats.h"
  18. #include "pdu_cont.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. int pdu_ref_count=0;
  25. extern __declspec( dllimport ) Pdu_Container *pdu_container; 
  26. /////////////////////////////////////////////////////////////////////////////
  27. // Stats dialog
  28. Stats::Stats(CWnd* pParent /*=NULL*/)
  29. : CDialog(Stats::IDD, pParent)
  30. {
  31. //{{AFX_DATA_INIT(Stats)
  32. m_auto_refresh = FALSE;
  33. m_queue = _T("");
  34. m_timeouts = _T("");
  35. m_traprec = _T("");
  36. m_trapsent = _T("");
  37. m_uided = _T("");
  38. m_decerrs = _T("");
  39. m_received = _T("");
  40. m_recerrs = _T("");
  41. m_sent = _T("");
  42. m_senterrs = _T("");
  43. m_strays = _T("");
  44. //}}AFX_DATA_INIT
  45. Create(IDD, pParent);
  46. // create a snmp++ object
  47. int status;
  48. snmp = new Snmp( status);
  49. if ( status != SNMP_CLASS_SUCCESS)
  50. {
  51. AfxMessageBox("Unable To Create Snmp Object!");
  52. snmp = NULL;
  53. }
  54. }
  55. void Stats::DoDataExchange(CDataExchange* pDX)
  56. {
  57. CDialog::DoDataExchange(pDX);
  58. //{{AFX_DATA_MAP(Stats)
  59. DDX_Check(pDX, IDC_AUTOREFRESH, m_auto_refresh);
  60. DDX_Text(pDX, IDC_QUEUE, m_queue);
  61. DDX_Text(pDX, IDC_TIMEOUTS, m_timeouts);
  62. DDX_Text(pDX, IDC_TRAPREC, m_traprec);
  63. DDX_Text(pDX, IDC_TRAPSENT, m_trapsent);
  64. DDX_Text(pDX, IDC_UIDED, m_uided);
  65. DDX_Text(pDX, IDC_DECERRS, m_decerrs);
  66. DDX_Text(pDX, IDC_RECEIVED, m_received);
  67. DDX_Text(pDX, IDC_RECERRS, m_recerrs);
  68. DDX_Text(pDX, IDC_SENT, m_sent);
  69. DDX_Text(pDX, IDC_SENTERRS, m_senterrs);
  70. DDX_Text(pDX, IDC_STRAYS, m_strays);
  71. //}}AFX_DATA_MAP
  72. }
  73. BEGIN_MESSAGE_MAP(Stats, CDialog)
  74. //{{AFX_MSG_MAP(Stats)
  75. ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
  76. ON_BN_CLICKED(IDC_AUTOREFRESH, OnAutorefresh)
  77. ON_WM_TIMER()
  78. //}}AFX_MSG_MAP
  79. ON_MESSAGE(WM_USER+1,init)
  80. END_MESSAGE_MAP()
  81. long Stats::init(UINT wParam,LONG lParam)
  82. {
  83.   OnUpdate();
  84.   return 0; 
  85. } ;
  86. BOOL Stats::OnInitDialog() 
  87. {
  88. CDialog::OnInitDialog();
  89. // TODO: Add extra initialization here
  90. CenterWindow();
  91. PostMessage( WM_USER+1);
  92. return TRUE;  // return TRUE unless you set the focus to a control
  93.               // EXCEPTION: OCX Property Pages should return FALSE
  94. }
  95. void Stats::OnUpdate() 
  96. {
  97. // TODO: Add your control notification handler code here
  98. char msg[20];
  99. // received
  100.     sprintf(msg,"%08ld", pdu_container->get_pdus_received());
  101.     m_received = msg;
  102. // received errors
  103. sprintf(msg,"%08ld", pdu_container->get_received_errs());
  104.     m_recerrs = msg;
  105. // max queue size
  106.     sprintf(msg,"%08ld", pdu_container->get_max_queue());
  107.     m_queue = msg;
  108.   
  109. // sent errors
  110.     sprintf(msg,"%08ld", pdu_container->get_sent_errs());
  111.     m_senterrs = msg;
  112.   
  113. // sent
  114.     sprintf(msg,"%08ld", pdu_container->get_pdus_sent());
  115.     m_sent = msg;
  116.   
  117.     // timeouts
  118.     sprintf(msg,"%08ld", pdu_container-> get_timeouts());
  119.     m_timeouts = msg;
  120.     
  121. // traps received
  122.     sprintf(msg,"%08ld", pdu_container->get_trap_count());
  123.     m_traprec = msg; 
  124. // traps sent
  125. sprintf(msg,"%08ld", pdu_container->get_traps_sent());
  126.     m_trapsent = msg; 
  127.   
  128. // decode errors
  129.     sprintf(msg,"%08ld", pdu_container->get_decode_errs());
  130.     m_decerrs = msg;
  131.   
  132. // stray responses
  133.     sprintf(msg,"%08ld", pdu_container->get_stray_resp());
  134.     m_strays = msg;
  135.   
  136. // unidentified responses
  137.     sprintf(msg,"%08ld", pdu_container->get_inval_resp());
  138.     m_uided = msg; 
  139.     UpdateData( FALSE);
  140. }
  141. void Stats::OnAutorefresh() 
  142. {
  143. // TODO: Add your control notification handler code here
  144. UpdateData( TRUE);
  145. if ( m_auto_refresh)
  146. SetTimer(1 ,1000, NULL);
  147. else
  148. KillTimer(1);
  149. }
  150. void Stats::OnTimer(UINT nIDEvent) 
  151. {
  152. // TODO: Add your message handler code here and/or call default
  153. KillTimer( nIDEvent);
  154. OnUpdate();
  155. SetTimer( nIDEvent, 1000, NULL);
  156. CDialog::OnTimer(nIDEvent);
  157. }
  158. void Stats::OnCancel() 
  159. {
  160. // TODO: Add extra cleanup here
  161. DestroyWindow();
  162. }