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.
122 lines
3.1 KiB
122 lines
3.1 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1993.
|
|
//
|
|
// File: jpmgr.hxx
|
|
//
|
|
// Contents: CJobProcessorMgr class definition.
|
|
//
|
|
// Classes: CJobProcessorMgr
|
|
//
|
|
// Functions: None.
|
|
//
|
|
// History: 25-Oct-95 MarkBl Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef __JPMGR_HXX__
|
|
#define __JPMGR_HXX__
|
|
|
|
class CJobProcessor; // Forward reference.
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CJobProcessorQueue
|
|
//
|
|
// Synopsis: Queue of CJobProcessor.
|
|
//
|
|
// History: 25-Oct-95 MarkBl Created
|
|
//
|
|
// Notes: None.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CJobProcessorQueue : public CQueue
|
|
{
|
|
public:
|
|
|
|
CJobProcessorQueue(void) {
|
|
TRACE3(CJobProcessorQueue, CJobProcessorQueue);
|
|
}
|
|
|
|
~CJobProcessorQueue();
|
|
|
|
void AddElement(CJobProcessor * pjp) {
|
|
schDebugOut((DEB_USER3,
|
|
"CJobProcessorQueue::AddElement(0x%x) pjp(0x%x)\n",
|
|
this,
|
|
pjp));
|
|
CQueue::AddElement((CDLink *)pjp);
|
|
}
|
|
|
|
CJobProcessor * GetFirstElement(void) {
|
|
TRACE3(CJobProcessorQueue, GetFirstElement);
|
|
return((CJobProcessor *)CQueue::GetFirstElement());
|
|
}
|
|
|
|
CJobProcessor * RemoveElement(void) {
|
|
TRACE3(CJobProcessorQueue, RemoveElement);
|
|
return((CJobProcessor *)CQueue::RemoveElement());
|
|
}
|
|
|
|
CJobProcessor * RemoveElement(CJobProcessor * pjp) {
|
|
schDebugOut((DEB_USER3,
|
|
"CJobProcessorQueue::RemoveElement(0x%x) pjp)\n",
|
|
this,
|
|
pjp));
|
|
return((CJobProcessor *)CQueue::RemoveElement((CDLink *)pjp));
|
|
}
|
|
};
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CJobProcessorMgr
|
|
//
|
|
// Synopsis: Job processor pool managment class.
|
|
//
|
|
// History: 25-Oct-95 MarkBl Created
|
|
//
|
|
// Notes: None.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CJobProcessorMgr
|
|
{
|
|
public:
|
|
|
|
CJobProcessorMgr(void) {
|
|
TRACE3(CJobProcessorMgr, CJobProcessorMgr);
|
|
InitializeCriticalSection(&_csProcessorMgrCritSection);
|
|
}
|
|
|
|
~CJobProcessorMgr() {
|
|
TRACE3(CJobProcessorMgr, ~CJobProcessorMgr);
|
|
DeleteCriticalSection(&_csProcessorMgrCritSection);
|
|
}
|
|
|
|
HRESULT NewProcessor(CJobProcessor ** ppjp);
|
|
|
|
void GarbageCollection(void);
|
|
|
|
CJobProcessor * GetFirstProcessor(void);
|
|
|
|
void LockProcessorPool(void) {
|
|
TRACE3(CJobProcessorMgr, LockProcessorPool);
|
|
EnterCriticalSection(&_csProcessorMgrCritSection);
|
|
}
|
|
|
|
void UnlockProcessorPool(void) {
|
|
TRACE3(CJobProcessorMgr, UnlockProcessorPool);
|
|
LeaveCriticalSection(&_csProcessorMgrCritSection);
|
|
}
|
|
|
|
void Shutdown(void);
|
|
|
|
private:
|
|
|
|
CRITICAL_SECTION _csProcessorMgrCritSection;
|
|
CJobProcessorQueue _JobProcessorQueue;
|
|
};
|
|
|
|
#endif // __JPMGR_HXX__
|