windows-nt/Source/XPSP1/NT/net/mmc/wins/ipnamepr.cpp
2020-09-26 16:20:57 +08:00

187 lines
4.5 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corporation, 1997 - 1999 -99 **/
/**********************************************************************/
/*
IPNamePr.cpp
Comment goes here
FILE HISTORY:
*/
#include "stdafx.h"
#include "ipnamepr.h"
//
// Compare two ip/name pairs. Return
// 0 if the same, 1 otherwise. fBoth
// indicates if both addresses need to
// match, or if a match in either
// produces a match.
//
int
CIpNamePair::Compare(
const CIpNamePair& inpTarget,
BOOL fBoth
) const
{
if (fBoth)
{
if (((LONG)inpTarget.m_iaIpAddress == (LONG)m_iaIpAddress) &&
((LONG)inpTarget.m_strNetBIOSName.CompareNoCase(m_strNetBIOSName) == 0))
{
return 0;
}
return 1;
}
//
// Match if either matches
//
if (((LONG)inpTarget.m_iaIpAddress == (LONG)m_iaIpAddress) ||
((LONG)inpTarget.m_strNetBIOSName.CompareNoCase(m_strNetBIOSName) == 0))
{
return 0;
}
return 1;
}
//
// Sort helper function
//
int
CIpNamePair::OrderByName (
const CObjectPlus * pobMapping
) const
{
return ((CIpNamePair *)pobMapping)->m_strNetBIOSName.CompareNoCase(m_strNetBIOSName);
}
//
// Sort helper function
//
int
CIpNamePair::OrderByIp (
const CObjectPlus * pobMapping
) const
{
LONG l1 = (LONG)m_iaIpAddress;
LONG l2 = (LONG)((CIpNamePair *)pobMapping)->m_iaIpAddress;
return l2 > l1 ? -1 : l2 == l1 ? 0 : +1;
}
CIpNamePair::CIpNamePair()
{
}
CIpNamePair::CIpNamePair(const CIpAddress& ia, const CString& str)
: m_iaIpAddress(ia), m_strNetBIOSName(str)
{
m_nNameLength = str.GetLength();
}
CIpNamePair::CIpNamePair(const CIpNamePair& inpAddress)
: m_iaIpAddress(inpAddress.m_iaIpAddress),
m_strNetBIOSName(inpAddress.m_strNetBIOSName),
m_nNameLength(inpAddress.m_nNameLength)
{
}
//CWinsServerObj::CWinsServerObj(): CIpNamePair(),m_iaPrimaryAddress()
CWinsServerObj::CWinsServerObj():CIpNamePair(),m_iaPrimaryAddress()
{
m_fPushInitially = m_fPush = FALSE;
m_fPullInitially = m_fPull = FALSE;
}
//
// For both constructors below, we initially set
// the primary ip address to the initial ip address
// Use SetPrimaryIpAddress to change
//
CWinsServerObj::CWinsServerObj(
const CIpAddress& ia,
const CString& str,
BOOL fPush,
BOOL fPull,
CIntlNumber inPushUpdateCount,
CIntlNumber inPullReplicationInterval,
CIntlTime itmPullStartTime
)
: CIpNamePair(ia, str),
m_inPushUpdateCount(inPushUpdateCount),
m_inPullReplicationInterval(inPullReplicationInterval),
m_itmPullStartTime(itmPullStartTime),
m_iaPrimaryAddress(ia)
{
m_fPushInitially = m_fPush = fPush;
m_fPullInitially = m_fPull = fPull;
}
CWinsServerObj::CWinsServerObj(
const CIpNamePair& inpAddress,
BOOL fPush,
BOOL fPull,
CIntlNumber inPushUpdateCount,
CIntlNumber inPullReplicationInterval,
CIntlTime itmPullStartTime
)
: CIpNamePair(inpAddress),
m_inPushUpdateCount(inPushUpdateCount),
m_inPullReplicationInterval(inPullReplicationInterval),
m_itmPullStartTime(itmPullStartTime),
m_iaPrimaryAddress(inpAddress.QueryIpAddress())
{
m_fPushInitially = m_fPush = fPush;
m_fPullInitially = m_fPull = fPull;
}
CWinsServerObj::CWinsServerObj(
const CWinsServerObj& wsServer
)
: CIpNamePair(wsServer),
m_inPushUpdateCount(wsServer.m_inPushUpdateCount),
m_inPullReplicationInterval(wsServer.m_inPullReplicationInterval),
m_itmPullStartTime(wsServer.m_itmPullStartTime)
{
m_fPushInitially = m_fPush = wsServer.IsPush();
m_fPullInitially = m_fPull = wsServer.IsPull();
m_fPullPersistence = wsServer.m_fPullPersistence;
m_fPushPersistence = wsServer.m_fPushPersistence;
m_strIPAddress = wsServer.m_strIPAddress;
}
CWinsServerObj &
CWinsServerObj::operator=(
const CWinsServerObj& wsNew
)
{
m_iaIpAddress = wsNew.m_iaIpAddress;
m_strNetBIOSName = wsNew.m_strNetBIOSName;
m_inPushUpdateCount = wsNew.m_inPushUpdateCount;
m_inPullReplicationInterval = wsNew.m_inPullReplicationInterval;
m_itmPullStartTime = wsNew.m_itmPullStartTime;
m_fPull = wsNew.m_fPull;
m_fPush = wsNew.m_fPush;
m_fPullInitially = wsNew.m_fPullInitially;
m_fPushInitially = wsNew.m_fPullInitially;
m_strIPAddress = wsNew.m_strIPAddress;
m_fPullPersistence = wsNew.m_fPullPersistence;
m_fPushPersistence = wsNew.m_fPushPersistence;
return *this;
}