|
|
/*==========================================================================
* * Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved. * * File: mytimer.h * Content: This file contains code for the Protocol's timers * * History: * Date By Reason * ==== == ====== * 06/04/98 aarono Original * 07/01/00 masonb Assumed Ownership * 06/25/02 simonpow Modified to use inline functions calling into the standard threadpool * ****************************************************************************/
#pragma TODO(vanceo, "Select CPU for these functions")
//N.B. The 3rd param for ScheduleProtocolTimer and RescheduleProtocolTimer (the unused DWORD) takes the accuracy
//we require for the timer. This isn't supported in the current thread pool, but I've left the option there in case we ever
//implement this functionality
inline HRESULT ScheduleProtocolTimer(PSPD pSPD, DWORD dwDelay, DWORD , const PFNDPTNWORKCALLBACK pfnWorkCallback, void * pvCallbackContext, void ** ppvTimerData, UINT *const pdwTimerUnique) { #ifndef DPNBUILD_NOPROTOCOLTESTITF
if (pSPD->pPData->ulProtocolFlags & PFLAGS_FAIL_SCHEDULE_TIMER) return DPNERR_OUTOFMEMORY; #endif
return IDirectPlay8ThreadPoolWork_ScheduleTimer(pSPD->pPData->pDPThreadPoolWork, -1, dwDelay, pfnWorkCallback, pvCallbackContext, ppvTimerData, pdwTimerUnique, 0); }
inline HRESULT RescheduleProtocolTimer(PSPD pSPD, void * pvTimerData, DWORD dwDelay, DWORD, const PFNDPTNWORKCALLBACK pfnWorkCallback, void * pvCallbackContext, UINT *const pdwTimerUnique) { return IDirectPlay8ThreadPoolWork_ResetCompletingTimer(pSPD->pPData->pDPThreadPoolWork, pvTimerData, dwDelay, pfnWorkCallback, pvCallbackContext, pdwTimerUnique, 0); }
inline HRESULT CancelProtocolTimer(PSPD pSPD, void * pvTimerData, DWORD dwTimerUnique) { return IDirectPlay8ThreadPoolWork_CancelTimer(pSPD->pPData->pDPThreadPoolWork, pvTimerData, dwTimerUnique, 0); }
inline HRESULT ScheduleProtocolWork(PSPD pSPD, const PFNDPTNWORKCALLBACK pfnWorkCallback, void * const pvCallbackContext) { return IDirectPlay8ThreadPoolWork_QueueWorkItem(pSPD->pPData->pDPThreadPoolWork, -1, pfnWorkCallback, pvCallbackContext, 0); }
|