Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
6.3 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1997 - 1998
  6. //
  7. // File: pgsbm.cpp
  8. //
  9. //--------------------------------------------------------------------------
  10. // PgSBM.cpp : implementation file
  11. //
  12. #include "stdafx.h"
  13. #include "acsadmin.h"
  14. #include "PgSBM.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CPgSBM property page
  22. IMPLEMENT_DYNCREATE(CPgSBM, CACSPage)
  23. CPgSBM::CPgSBM(CACSSubnetConfig* pConfig) : CACSPage(CPgSBM::IDD)
  24. {
  25. ASSERT(pConfig);
  26. m_spConfig = pConfig;
  27. DataInit();
  28. }
  29. void CPgSBM::DataInit()
  30. {
  31. //{{AFX_DATA_INIT(CPgSBM)
  32. m_dwAliveInterval = ACS_SCADEF_DSBMREFRESH;
  33. m_dwB4Reserve = ACS_SCADEF_NONRESERVEDTXLIMIT;
  34. m_dwDeadInterval = ACS_SCADEF_DSBMDEADTIME;
  35. m_dwElection = ACS_SCADEF_DSBMPRIORITY;
  36. m_dwTimeout = ACS_SCADEF_CACHETIMEOUT;
  37. //}}AFX_DATA_INIT
  38. }
  39. CPgSBM::CPgSBM() : CACSPage(CPgSBM::IDD)
  40. {
  41. DataInit();
  42. }
  43. CPgSBM::~CPgSBM()
  44. {
  45. }
  46. void CPgSBM::DoDataExchange(CDataExchange* pDX)
  47. {
  48. CACSPage::DoDataExchange(pDX);
  49. //{{AFX_DATA_MAP(CPgSBM)
  50. DDX_Control(pDX, IDC_SPIN1, m_SpinElection);
  51. DDX_Text(pDX, IDC_EDIT_ALIVEINTERVAL, m_dwAliveInterval);
  52. DDV_MinMaxDWord(pDX, m_dwAliveInterval, ACS_SCAV_MIN_DSBMREFRESH, ACS_SCAV_MAX_DSBMREFRESH);
  53. DDX_Text(pDX, IDC_EDIT_B4RESERVE, m_dwB4Reserve);
  54. DDV_MinMaxDWord(pDX, m_dwB4Reserve, 0, DWORD_LIMIT);
  55. DDX_Text(pDX, IDC_EDIT_DEADINTERVAL, m_dwDeadInterval);
  56. DDV_MinMaxDWord(pDX, m_dwDeadInterval, ACS_SCAV_MIN_DSBMDEADTIME, ACS_SCAV_MAX_DSBMDEADTIME);
  57. DDX_Text(pDX, IDC_EDIT_ELECTION, m_dwElection);
  58. DDV_MinMaxDWord(pDX, m_dwElection, ACS_SCAV_MIN_DSBMPRIORITY, ACS_SCAV_MAX_DSBMPRIORITY);
  59. DDX_Text(pDX, IDC_EDIT_TIMEOUT, m_dwTimeout);
  60. DDV_MinMaxDWord(pDX, m_dwTimeout, ACS_SCAV_MIN_CACHETIMEOUT, ACS_SCAV_MAX_CACHETIMEOUT);
  61. //}}AFX_DATA_MAP
  62. }
  63. BEGIN_MESSAGE_MAP(CPgSBM, CACSPage)
  64. //{{AFX_MSG_MAP(CPgSBM)
  65. ON_EN_CHANGE(IDC_EDIT_ALIVEINTERVAL, OnChangeEditAliveinterval)
  66. ON_EN_CHANGE(IDC_EDIT_B4RESERVE, OnChangeEditB4reserve)
  67. ON_EN_CHANGE(IDC_EDIT_DEADINTERVAL, OnChangeEditDeadinterval)
  68. ON_EN_CHANGE(IDC_EDIT_ELECTION, OnChangeEditElection)
  69. ON_EN_CHANGE(IDC_EDIT_TIMEOUT, OnChangeEditTimeout)
  70. //}}AFX_MSG_MAP
  71. END_MESSAGE_MAP()
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CPgSBM message handlers
  74. BOOL CPgSBM::OnApply()
  75. {
  76. // Election
  77. m_spConfig->SetFlags(ATTR_FLAG_SAVE, ACS_SCAF_DSBMPRIORITY, true);
  78. m_spConfig->m_dwDSBMPRIORITY = m_dwElection;
  79. // alive interval
  80. m_spConfig->SetFlags(ATTR_FLAG_SAVE, ACS_SCAF_DSBMREFRESH, true);
  81. m_spConfig->m_dwDSBMREFRESH = m_dwAliveInterval;
  82. // dead interval
  83. m_spConfig->SetFlags(ATTR_FLAG_SAVE, ACS_SCAF_DSBMDEADTIME, true);
  84. m_spConfig->m_dwDSBMDEADTIME = m_dwDeadInterval;
  85. // cache timeout
  86. m_spConfig->SetFlags(ATTR_FLAG_SAVE, ACS_SCAF_CACHETIMEOUT, true);
  87. m_spConfig->m_dwCACHETIMEOUT = MIN2SEC(m_dwTimeout);
  88. // B4 reservation
  89. m_spConfig->SetFlags(ATTR_FLAG_SAVE, ACS_SCAF_NONRESERVEDTXLIMIT, true);
  90. m_spConfig->m_ddNONRESERVEDTXLIMIT.LowPart = FROMKBS(m_dwB4Reserve);
  91. m_spConfig->m_ddNONRESERVEDTXLIMIT.HighPart = 0;
  92. DWORD dwAttrFlags = ATTR_FLAGS_NONE;
  93. dwAttrFlags |= (ACS_SCAF_DSBMPRIORITY | ACS_SCAF_DSBMREFRESH);
  94. dwAttrFlags |= (ACS_SCAF_DSBMDEADTIME | ACS_SCAF_CACHETIMEOUT | ACS_SCAF_NONRESERVEDTXLIMIT);
  95. AddFlags(dwAttrFlags); // prepare flags for saving
  96. /*
  97. m_spConfig->Save(dwAttrFlags);
  98. */
  99. return CACSPage::OnApply();
  100. }
  101. BOOL CPgSBM::OnInitDialog()
  102. {
  103. // Election Priority
  104. if(m_spConfig->GetFlags(ATTR_FLAG_LOAD, ACS_SCAF_DSBMPRIORITY))
  105. m_dwElection = m_spConfig->m_dwDSBMPRIORITY;
  106. // Alive interval
  107. if(m_spConfig->GetFlags(ATTR_FLAG_LOAD, ACS_SCAF_DSBMREFRESH))
  108. m_dwAliveInterval = m_spConfig->m_dwDSBMREFRESH;
  109. // Dead interval
  110. if(m_spConfig->GetFlags(ATTR_FLAG_LOAD, ACS_SCAF_DSBMDEADTIME))
  111. m_dwDeadInterval = m_spConfig->m_dwDSBMDEADTIME;
  112. // Cache timeout
  113. if(m_spConfig->GetFlags(ATTR_FLAG_LOAD, ACS_SCAF_CACHETIMEOUT))
  114. m_dwTimeout = SEC2MIN(m_spConfig->m_dwCACHETIMEOUT);
  115. // B4 reservation
  116. if(m_spConfig->GetFlags(ATTR_FLAG_LOAD, ACS_SCAF_NONRESERVEDTXLIMIT))
  117. m_dwB4Reserve = TOKBS(m_spConfig->m_ddNONRESERVEDTXLIMIT.LowPart);
  118. CACSPage::OnInitDialog();
  119. m_SpinElection.SetRange(ACS_SCAV_MIN_DSBMPRIORITY, ACS_SCAV_MAX_DSBMPRIORITY);
  120. // TODO: Add extra initialization here
  121. return TRUE; // return TRUE unless you set the focus to a control
  122. // EXCEPTION: OCX Property Pages should return FALSE
  123. }
  124. void CPgSBM::OnChangeEditAliveinterval()
  125. {
  126. SetModified();
  127. // TODO: If this is a RICHEDIT control, the control will not
  128. // send this notification unless you override the CACSPage::OnInitDialog()
  129. // function to send the EM_SETEVENTMASK message to the control
  130. // with the ENM_CHANGE flag ORed into the lParam mask.
  131. // TODO: Add your control notification handler code here
  132. }
  133. void CPgSBM::OnChangeEditB4reserve()
  134. {
  135. SetModified();
  136. // TODO: If this is a RICHEDIT control, the control will not
  137. // send this notification unless you override the CACSPage::OnInitDialog()
  138. // function to send the EM_SETEVENTMASK message to the control
  139. // with the ENM_CHANGE flag ORed into the lParam mask.
  140. // TODO: Add your control notification handler code here
  141. }
  142. void CPgSBM::OnChangeEditDeadinterval()
  143. {
  144. SetModified();
  145. // TODO: If this is a RICHEDIT control, the control will not
  146. // send this notification unless you override the CACSPage::OnInitDialog()
  147. // function to send the EM_SETEVENTMASK message to the control
  148. // with the ENM_CHANGE flag ORed into the lParam mask.
  149. // TODO: Add your control notification handler code here
  150. }
  151. void CPgSBM::OnChangeEditElection()
  152. {
  153. SetModified();
  154. // TODO: If this is a RICHEDIT control, the control will not
  155. // send this notification unless you override the CACSPage::OnInitDialog()
  156. // function to send the EM_SETEVENTMASK message to the control
  157. // with the ENM_CHANGE flag ORed into the lParam mask.
  158. // TODO: Add your control notification handler code here
  159. }
  160. void CPgSBM::OnChangeEditTimeout()
  161. {
  162. SetModified();
  163. // TODO: If this is a RICHEDIT control, the control will not
  164. // send this notification unless you override the CACSPage::OnInitDialog()
  165. // function to send the EM_SETEVENTMASK message to the control
  166. // with the ENM_CHANGE flag ORed into the lParam mask.
  167. // TODO: Add your control notification handler code here
  168. }