#pragma once class ShutdownManager { public: typedef enum { eMainThread, eLeaderboardThread, eCommerceThread, ePostProcessThread, eRunUpdateThread, eRenderChunkUpdateThread, eServerThread, eStorageManagerThreads, eConnectionReadThreads, eConnectionWriteThreads, eEventQueueThreads, eThreadIdCount } EThreadId; static void Initialise(); static void StartShutdown(); static void MainThreadHandleShutdown(); #ifdef __PS3__ static void SysUtilCallback(uint64_t status, uint64_t param, void *userdata); #endif static void HasStarted(EThreadId threadId); static void HasStarted(EThreadId threadId, C4JThread::EventArray *eventArray); static bool ShouldRun(EThreadId threadId); static void HasFinished(EThreadId threadId); private: #ifdef __PS3__ static bool s_threadShouldRun[eThreadIdCount]; static int s_threadRunning[eThreadIdCount]; static CRITICAL_SECTION s_threadRunningCS; static C4JThread::EventArray *s_eventArray[eThreadIdCount]; static void RequestThreadToStop(int i); static void WaitForSignalledToComplete(); static void StorageManagerCompleteFn(); #endif };