Table of Contents

include/AK/Tools/Common/AkSyncCaller.h

Go to the documentation of this file.
00001 
00002 //
00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved
00004 //
00006 
00007 // AkSyncLoader.h
00008 
00011 
00012 #ifndef _AK_SYNC_CALLER_H_
00013 #define _AK_SYNC_CALLER_H_
00014 
00015 #include <AK/Tools/Common/AkPlatformFuncs.h>
00016 
00017 namespace AK
00018 {
00019     namespace SoundEngine
00020     {
00023         class AkSyncCaller
00024         {
00025         public:
00027             AKRESULT Init()
00028             {
00029                 if ( AKPLATFORM::AkCreateEvent( m_hEvent ) != AK_Success )
00030                 {
00031                     AKASSERT( !"Could not create synchronization event" );
00032                     return AK_Fail;
00033                 }
00034                 return AK_Success;
00035             }
00036 
00038             AKRESULT Wait( AKRESULT in_eResult )
00039             {
00040                 if ( in_eResult != AK_Success )
00041                 {
00042                     AKPLATFORM::AkDestroyEvent( m_hEvent );
00043                     return in_eResult;
00044                 }
00045 
00046                 // Task queueing successful. Block until completion.
00047                 AKPLATFORM::AkWaitForEvent( m_hEvent );
00048                 AKPLATFORM::AkDestroyEvent( m_hEvent );
00049 
00050                 return m_eResult;
00051             }
00052 
00054             inline void Done() { AKPLATFORM::AkSignalEvent( m_hEvent ); }
00055 
00056             AKRESULT    m_eResult;  
00057 
00058         private:
00059             AkEvent     m_hEvent;   
00060         };
00061     }
00062 }
00063 
00064 #endif // _AK_SYNC_CALLER_H_