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.

128 lines
3.9 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright(C) 2000 Microsoft Corporation all rights reserved.
  4. //
  5. // Module: ProxyServersGroupHelper.cpp
  6. //
  7. // Project: Windows 2000 IAS
  8. //
  9. // Description: Implementation of CProxyServersGroupHelper
  10. //
  11. // Author: tperraut
  12. //
  13. // Revision 02/24/2000 created
  14. //
  15. /////////////////////////////////////////////////////////////////////////////
  16. #include "stdafx.h"
  17. #include "GlobalTransaction.h"
  18. #include "GlobalData.h"
  19. #include "ProxyServersGroupHelper.h"
  20. #include "Objects.h"
  21. #include "Properties.h"
  22. LONG CProxyServersGroupHelper::m_GroupParent = 0;
  23. //////////////////////////////////////////////////////////////////////////////
  24. // Construction/Destruction
  25. //////////////////////////////////////////////////////////////////////////////
  26. CProxyServersGroupHelper::CProxyServersGroupHelper(
  27. CGlobalData& pGlobalData
  28. )
  29. :m_pGlobalData(pGlobalData),
  30. m_NewGroupIdSet(FALSE),
  31. m_Name(L""),
  32. m_GroupIdentity(0)
  33. {
  34. if ( !m_GroupParent )
  35. {
  36. LPCWSTR Path = L"Root\0"
  37. L"Microsoft Internet Authentication Service\0"
  38. L"RADIUS Server Groups\0";
  39. m_pGlobalData.m_pObjects->WalkPath(
  40. Path,
  41. m_GroupParent
  42. );
  43. }
  44. }
  45. //////////////////////////////////////////////////////////////////////////////
  46. // SetName
  47. //////////////////////////////////////////////////////////////////////////////
  48. void CProxyServersGroupHelper::SetName(const _bstr_t &pName)
  49. {
  50. m_Name = pName;
  51. }
  52. //////////////////////////////////////////////////////////////////////////////
  53. // GetServersGroupIdentity
  54. //////////////////////////////////////////////////////////////////////////////
  55. LONG CProxyServersGroupHelper::GetIdentity() const
  56. {
  57. if ( m_NewGroupIdSet ) // initialized implied
  58. {
  59. return m_GroupIdentity;
  60. }
  61. else
  62. {
  63. _com_issue_error(E_INVALIDARG);
  64. // never hit but needed to compile
  65. return 0;
  66. }
  67. }
  68. //////////////////////////////////////////////////////////////////////////////
  69. // Add
  70. //////////////////////////////////////////////////////////////////////////////
  71. void CProxyServersGroupHelper::Add(CProxyServerHelper &Server)
  72. {
  73. Server.CreateUniqueName();
  74. m_ServerArray.push_back(Server);
  75. }
  76. //////////////////////////////////////////////////////////////////////////////
  77. // GetName
  78. //////////////////////////////////////////////////////////////////////////////
  79. LPCOLESTR CProxyServersGroupHelper::GetName() const
  80. {
  81. return m_Name;
  82. }
  83. //////////////////////////////////////////////////////////////////////////////
  84. // Persist
  85. //////////////////////////////////////////////////////////////////////////////
  86. void CProxyServersGroupHelper::Persist()
  87. {
  88. // Persist the ServerGroup Itself so that m_GroupIdentity is set
  89. if ( m_Name.length() )
  90. {
  91. // object does not exist (New Database assumed)
  92. m_pGlobalData.m_pObjects->InsertObject(
  93. m_Name,
  94. m_GroupParent,
  95. m_GroupIdentity
  96. );
  97. m_NewGroupIdSet = TRUE;
  98. }
  99. else
  100. {
  101. _com_issue_error(E_INVALIDARG);
  102. }
  103. // now for each server in the vector
  104. ServerArray::iterator ArrayIterator = m_ServerArray.begin();
  105. while (ArrayIterator != m_ServerArray.end())
  106. {
  107. // then persist
  108. ArrayIterator->Persist(m_GroupIdentity);
  109. ++ArrayIterator;
  110. }
  111. }