Leaked source code of windows server 2003
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.
 
 
 
 
 
 

130 lines
6.0 KiB

/*
* Filename: NLB_XMLDocument.h
* Description:
* Author: shouse, 04.10.01
*/
#ifndef __NLB_XMLDOCUMENT_H__
#define __NLB_XMLDOCUMENT_H__
#include <windows.h>
#include "NLB_Common.h"
#include "NLB_Cluster.h"
#include "NLB_Host.h"
#include "NLB_PortRule.h"
typedef struct _NLB_XMLError {
LONG code;
LONG line;
LONG character;
WCHAR wszURL[MAX_PATH];
WCHAR wszReason[MAX_PATH];
} NLB_XMLError;
#define FACILITY_NLB 49
#define NLB_ERROR_CLUSTER_NAME_MISSING 1
#define NLB_DESCR_CLUSTER_NAME_MISSING L"The required cluster attribute \"Name\" was not found."
class NLB_XMLDocument {
public:
NLB_XMLDocument ();
NLB_XMLDocument (bool bSilent);
~NLB_XMLDocument ();
HRESULT Validate (const WCHAR * wszFileName);
HRESULT Parse (const WCHAR * wszFileName, vector<NLB_Cluster> & Clusters);
HRESULT Save (const WCHAR * wszFileName, vector<NLB_Cluster> Clusters);
void Print (vector<NLB_Cluster> Clusters);
void GetParseError (NLB_XMLError & Error);
private:
BSTR AsciiToBSTR (const char * pszName);
CHAR * BSTRToAscii (const WCHAR * pwszName);
NLB_ClusterMode::NLB_ClusterModeType StringToClusterMode (const PWCHAR pwszType);
PWCHAR ClusterModeToString (const NLB_ClusterMode::NLB_ClusterModeType Type);
NLB_HostState::NLB_HostStateType StringToHostState (const PWCHAR pwszType);
PWCHAR HostStateToString (const NLB_HostState::NLB_HostStateType Type);
NLB_PortRuleState::NLB_PortRuleStateType StringToPortRuleState (const PWCHAR pwszType);
PWCHAR PortRuleStateToString (const NLB_PortRuleState::NLB_PortRuleStateType Type);
NLB_PortRuleProtocol::NLB_PortRuleProtocolType StringToPortRuleProtocol (const PWCHAR pwszType);
PWCHAR PortRuleProtocolToString (const NLB_PortRuleProtocol::NLB_PortRuleProtocolType Type);
NLB_PortRuleFilteringMode::NLB_PortRuleFilteringModeType StringToPortRuleFilteringMode (const PWCHAR pwszType);
PWCHAR PortRuleFilteringModeToString (const NLB_PortRuleFilteringMode::NLB_PortRuleFilteringModeType Type);
NLB_PortRuleAffinity::NLB_PortRuleAffinityType StringToPortRuleAffinity (const PWCHAR pwszType);
PWCHAR PortRuleAffinityToString (const NLB_PortRuleAffinity::NLB_PortRuleAffinityType Type);
HRESULT LoadDocument (BSTR pBURL);
HRESULT CheckDocumentLoad ();
HRESULT BeautifyDocument (MSXML2::IXMLDOMNode * pNode, ULONG depth);
HRESULT InsertFormatting (PWCHAR Text, MSXML2::IXMLDOMNode * pUnder, MSXML2::IXMLDOMNode * pBefore);
void SetParseError (HRESULT hrCode, PWSTR pwszReason);
HRESULT ParseCluster (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT ParseClusterProperties (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT ParseIPAddress (MSXML2::IXMLDOMNode * pNode, NLB_IPAddress * pIPAddress);
HRESULT ParseAdapter (MSXML2::IXMLDOMNode * pNode, NLB_Adapter * pAdapter);
HRESULT ParseRemoteControl (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT ParseHostState (MSXML2::IXMLDOMNode * pNode, NLB_Host * pHost);
HRESULT ParseBidirectionalAffinity (MSXML2::IXMLDOMNode * pNode, NLB_ClusterBDASupport * pBDA);
HRESULT ParseClusterHosts (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT ParseClusterPortRules (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT ParseHost (MSXML2::IXMLDOMNode * pNode, NLB_Host * pHost);
HRESULT ParsePortRule (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT ParseFiltering (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT ParsePriorities (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT ParseLoadWeights (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT SaveCluster (MSXML2::IXMLDOMNode * pRoot, NLB_Cluster * pCluster);
HRESULT SaveClusterProperties (MSXML2::IXMLDOMNode * pRoot, NLB_Cluster * pCluster);
HRESULT SaveIPAddress (MSXML2::IXMLDOMNode * pRoot, NLB_IPAddress * pAddress);
HRESULT SaveAdapter (MSXML2::IXMLDOMNode * pRoot, NLB_Adapter * pAdapter);
HRESULT SaveRemoteControl (MSXML2::IXMLDOMNode * pRoot, NLB_Cluster * pCluster);
HRESULT SaveHostState (MSXML2::IXMLDOMNode * pNode, NLB_Host * pHost);
HRESULT SaveBidirectionalAffinity (MSXML2::IXMLDOMNode * pNode, NLB_ClusterBDASupport * pBDA);
HRESULT SaveClusterHosts (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT SaveClusterPortRules (MSXML2::IXMLDOMNode * pNode, NLB_Cluster * pCluster);
HRESULT SaveHost (MSXML2::IXMLDOMNode * pNode, NLB_Host * pHost);
HRESULT SavePortRule (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT SaveFiltering (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT SavePriorities (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
HRESULT SaveLoadWeights (MSXML2::IXMLDOMNode * pNode, NLB_PortRule * pRule);
MSXML2::IXMLDOMNode * CreateNode(MSXML2::IXMLDOMDocument* pDoc, int type, PWCHAR pName);
MSXML2::IXMLDOMNode * CreateNode(MSXML2::IXMLDOMDocument* pDoc, int type, PWCHAR pName, PWCHAR pValue);
HRESULT SetIntegerAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, ULONG value);
HRESULT GetIntegerAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, PULONG value);
HRESULT SetBooleanAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, bool value);
HRESULT GetBooleanAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, bool * value);
HRESULT SetStringAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, PWCHAR pValue);
HRESULT GetStringAttribute(MSXML2::IXMLDOMNode * pNode, PWCHAR pAttribute, PWCHAR pValue, ULONG length);
HRESULT SetNodeValue(MSXML2::IXMLDOMNode * pNode, PWCHAR value);
HRESULT GetNodeValue(MSXML2::IXMLDOMNode * pNode, PWCHAR value, ULONG length);
private:
MSXML2::IXMLDOMDocument2 * pDoc;
MSXML2::IXMLDOMSchemaCollection * pSchema;
NLB_XMLError ParseError;
bool bShowErrorPopups;
};
#endif