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.
|
|
/************************************************************************
* * * 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\retry.cpv $ * * * $Revision: 1.11 $ * $Date: 12 Feb 1997 01:10:26 $ * * * $Author: CHULME $ * * * $Log: S:\sturgeon\src\gki\vcs\retry.cpv $ //
// Rev 1.11 12 Feb 1997 01:10:26 CHULME
// Redid thread synchronization to use Gatekeeper.Lock
//
// Rev 1.10 08 Feb 1997 13:05:10 CHULME
// Added debug message for thread termination
//
// Rev 1.9 08 Feb 1997 12:18:08 CHULME
// Added Check for semaphore signalling to exit the retry thread
//
// Rev 1.8 24 Jan 1997 18:29:44 CHULME
// Reverted to rev 1.6
//
// Rev 1.6 22 Jan 1997 20:45:38 EHOWARDX
// Work-around for race condition that may result in
// GKI_RegistrationRequest returning GKI_ALREADY_REG.
//
// Rev 1.5 17 Jan 1997 09:02:34 CHULME
// Changed reg.h to gkreg.h to avoid name conflict with inc directory
//
// Rev 1.4 10 Jan 1997 16:16:04 CHULME
// Removed MFC dependency
//
// Rev 1.3 20 Dec 1996 01:28:00 CHULME
// Fixed memory leak on GK_REG_BYPASS
//
// Rev 1.2 22 Nov 1996 15:21:12 CHULME
// Added VCS log to the header
*************************************************************************/
// retry.cpp : Provides a background retry thread
//
#include "precomp.h"
#include "gkicom.h"
#include "dspider.h"
#include "dgkilit.h"
#include "DGKIPROT.H"
#include "gksocket.h"
#include "GKREG.H"
#include "GATEKPR.H"
#include "h225asn.h"
#include "coder.hpp"
#include "dgkiext.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
#if (0)
void Retry(void *pv) { // ABSTRACT: This function is invoked in a separate thread to
// periodically check for outstanding PDUs. If a configurable
// timeout period has expired, the PDU will be reissued. If
// the maximum number of retries has been exhausted, this thread
// will clean-up the appropriate memory.
// AUTHOR: Colin Hulme
DWORD dwTime, dwErrorCode; #ifdef _DEBUG
char szGKDebug[80]; #endif
HRESULT hResult = GKI_OK; HANDLE hRetrySemaphore; SPIDER_TRACE(SP_FUNC, "Retry(pv)\n", 0); ASSERT(g_pGatekeeper); if(g_pGatekeeper == NULL) return; dwTime = g_pGatekeeper->GetRetryMS();
g_pGatekeeper->Lock(); while (hResult == GKI_OK) { hRetrySemaphore = g_pReg->m_hRetrySemaphore; g_pGatekeeper->Unlock(); dwErrorCode = WaitForSingleObject(hRetrySemaphore, dwTime); if(dwErrorCode != WAIT_TIMEOUT) { SPIDER_TRACE(SP_THREAD, "Retry thread exiting\n", 0); return; // Exit thread
}
g_pGatekeeper->Lock(); if (g_pReg == 0) { SPIDER_TRACE(SP_THREAD, "Retry thread exiting\n", 0); g_pGatekeeper->Unlock(); return; // Exit thread
}
hResult = g_pReg->Retry(); }
SPIDER_TRACE(SP_NEWDEL, "del g_pReg = %X\n", g_pReg); delete g_pReg; g_pReg = 0;
SPIDER_TRACE(SP_THREAD, "Retry thread exiting\n", 0); g_pGatekeeper->Unlock(); } #endif
|