133 lines
3.1 KiB
C++
133 lines
3.1 KiB
C++
/************************************************************************
|
|
* *
|
|
* INTEL CORPORATION PROPRIETARY INFORMATION *
|
|
* *
|
|
* This software is supplied under the terms of a license *
|
|
* agreement or non-disclosure agreement with Intel Corporation *
|
|
* and may not be copied or disclosed except in accordance *
|
|
* with the terms of that agreement. *
|
|
* *
|
|
* Copyright (C) 1997 Intel Corp. All Rights Reserved *
|
|
* *
|
|
* $Archive: S:\sturgeon\src\gki\vcs\gatekpr.h_v $
|
|
* *
|
|
* $Revision: 1.5 $
|
|
* $Date: 12 Feb 1997 01:10:56 $
|
|
* *
|
|
* $Author: CHULME $
|
|
* *
|
|
* $Log: S:\sturgeon\src\gki\vcs\gatekpr.h_v $
|
|
*
|
|
* Rev 1.5 12 Feb 1997 01:10:56 CHULME
|
|
* Redid thread synchronization to use Gatekeeper.Lock
|
|
*
|
|
* Rev 1.4 17 Jan 1997 12:52:46 CHULME
|
|
* Removed UNICODE dependent code
|
|
*
|
|
* Rev 1.3 10 Jan 1997 16:14:26 CHULME
|
|
* Removed MFC dependency
|
|
*
|
|
* Rev 1.2 20 Dec 1996 16:38:30 CHULME
|
|
* Fixed access synchronization with Gatekeeper lock
|
|
*
|
|
* Rev 1.1 22 Nov 1996 15:24:22 CHULME
|
|
* Added VCS log to the header
|
|
*************************************************************************/
|
|
|
|
// GATEKPR.H : interface of the CGatekeeper class
|
|
// See gatekeeper.cpp for the implementation of this class
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef GATEKEEPER_H
|
|
#define GATEKEEPER_H
|
|
|
|
class CGatekeeper
|
|
{
|
|
private:
|
|
char m_GKIPAddress[IPADDR_SZ + 1];
|
|
SOCKADDR_IN m_GKSockAddr;
|
|
DWORD m_dwMCastTTL;
|
|
BOOL m_fRejectReceived;
|
|
CRITICAL_SECTION m_CriticalSection;
|
|
DWORD m_dwLockingThread;
|
|
|
|
public:
|
|
CGatekeeper();
|
|
~CGatekeeper();
|
|
|
|
void Read(void);
|
|
void Write(void);
|
|
#ifdef BROADCAST_DISCOVERY
|
|
void DeleteCachedAddresses(void);
|
|
#endif // #ifdef BROADCAST_DISCOVERY
|
|
|
|
PSOCKADDR_IN GetSockAddr(void)
|
|
{
|
|
if(m_GKSockAddr.sin_addr.S_un.S_addr != INADDR_ANY)
|
|
{
|
|
return(&m_GKSockAddr);
|
|
}
|
|
else return NULL;
|
|
}
|
|
char *GetIPAddress(void)
|
|
{
|
|
return(m_GKIPAddress);
|
|
}
|
|
DWORD GetMCastTTL(void)
|
|
{
|
|
return m_dwMCastTTL;
|
|
}
|
|
BOOL GetRejectFlag(void)
|
|
{
|
|
return (m_fRejectReceived);
|
|
}
|
|
|
|
void SetIPAddress(char *szAddr)
|
|
{
|
|
if (lstrlenA(szAddr) <= IPADDR_SZ)
|
|
{
|
|
lstrcpyA(m_GKIPAddress, szAddr);
|
|
m_GKSockAddr.sin_addr.s_addr = inet_addr(m_GKIPAddress);
|
|
}
|
|
}
|
|
void SetSockAddr(PSOCKADDR_IN pAddr)
|
|
{
|
|
if(pAddr && pAddr->sin_addr.S_un.S_addr != INADDR_ANY)
|
|
{
|
|
m_GKSockAddr = *pAddr;
|
|
lstrcpyA(m_GKIPAddress, inet_ntoa(m_GKSockAddr.sin_addr));
|
|
}
|
|
}
|
|
void SetMCastTTL(DWORD dwttl)
|
|
{
|
|
m_dwMCastTTL = dwttl;
|
|
}
|
|
void SetRejectFlag(BOOL fReject)
|
|
{
|
|
m_fRejectReceived = fReject;
|
|
}
|
|
void Lock(void);
|
|
void Unlock(void);
|
|
};
|
|
|
|
class CGatekeeperLock
|
|
{
|
|
private:
|
|
CGatekeeper* m_pGK;
|
|
public:
|
|
CGatekeeperLock(CGatekeeper *pGK)
|
|
{
|
|
ASSERT(pGK);
|
|
m_pGK = pGK;
|
|
pGK->Lock();
|
|
}
|
|
~CGatekeeperLock()
|
|
{
|
|
m_pGK->Unlock();
|
|
}
|
|
};
|
|
|
|
#endif // GATEKEEPER_H
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|