00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00024 #include "mAsyncWaiter.h"
00025 
00029 CMessAsyncWaiter* CMessAsyncWaiter::NewL()
00030         {
00031         CMessAsyncWaiter* self = new(ELeave) CMessAsyncWaiter();
00032         return self;
00033         }
00034 
00038 CMessAsyncWaiter::CMessAsyncWaiter() : CActive(EPriorityStandard)
00039         {
00040         CActiveScheduler::Add(this);
00041         }       
00042 
00043 
00044 CMessAsyncWaiter::~CMessAsyncWaiter()
00045         {
00046         Cancel();
00047         }
00048         
00053 void CMessAsyncWaiter::StartAndWait()
00054         {
00055         SetActive();
00056         CActiveScheduler::Start();
00057         }
00058         
00059 
00060 TInt CMessAsyncWaiter::Result() const
00061         {
00062         return iError;
00063         }
00064         
00069 void CMessAsyncWaiter::RunL()
00070         {
00071         iError = iStatus.Int();
00072         CActiveScheduler::Stop();
00073         }
00074         
00079 void CMessAsyncWaiter::DoCancel()
00080         {
00081         iError = KErrCancel;
00082         CActiveScheduler::Stop();
00083         }
00084