void CWatcherActiveStep::RunTestsL() { switch (iTestState) { case EStateStartup: // Startup, test initial notify. { WaitForNotify(); iDriveWatcherX=CDriveWatcher::NewL(iFs, KDriveE, iWatcherStep); break; } case EStateTestNotify: // Test notification which should apply to a watched drive { WaitForNotify(); GenerateMediaChangeL(_L("E:\\private\\10202DCE\\mediachange\\")); break; } case EStateTestNotify2: { WaitForNotify(); TRAPD(err, GenerateMediaChangeL(_L("A:\\private\\10202DCE\\mediachange\\"))); if (err!=KErrNotReady && err!=KErrNone) { User::Leave(err); } TRAP(err, GenerateMediaChangeL(_L("B:\\private\\10202DCE\\mediachange\\"))); if (err!=KErrNotReady && err!=KErrNone) { User::Leave(err); } _LIT(KPath ,"\\private\\10202DCE\\mediachange\\"); TDriveUnit sysDrive (RFs::GetSystemDrive()); TBuf<128> mediaChangePath (sysDrive.Name()); mediaChangePath.Append(KPath); TRAP(err, GenerateMediaChangeL(mediaChangePath)); if (err!=KErrNotReady && err!=KErrNone) { User::Leave(err); } TRAP(err, GenerateMediaChangeL(_L("D:\\private\\10202DCE\\mediachange\\"))); if (err!=KErrNotReady && err!=KErrNone) { User::Leave(err); } GenerateMediaChangeL(_L("E:\\private\\10202DCE\\mediachange\\")); break; } } }
void CWatcherActiveStep::RunNextTest(TTestState aNextState) { iTestState=aNextState; WaitForNotify(); TRequestStatus* status=&iStatus; User::RequestComplete(status, KErrNone); }
void CBBListenerImpl::GetOrWaitL() { if (iGetState==EWaitForNotify) { WaitForNotify(); } else if (iGetState==EGettingListener) { GetListener(); } else if (iGetState==EIdle || iGetState==EGettingLoca) { GetLoca(); } }
void CWatcherActiveStep::StartTest() { // setup state iTestState=EStateStartup; WaitForNotify(); TRequestStatus* status=&iStatus; User::RequestComplete(status, KErrNone); // start new level of scheduler CActiveScheduler::Start(); }
void CBBListenerImpl::CheckedRunL() { CALLSTACKITEM_N(_CL("CBBListenerImpl"), _CL("CheckedRunL")); #ifdef __WINS__ //User::Leave(KErrGeneral); #endif Log(_L("CheckedRunL()")); { if (iStatus.Int()!=KErrNone && iStatus.Int()!=EDeleteNotification) { if (iStatus.Int()==KClientBufferTooSmall) { iSerializedData->Des().Zero(); iSerializedData=iSerializedData->ReAllocL(iSerializedData->Des().MaxLength()*2); iAsyncErrorCount=0; GetOrWaitL(); return; } else if (iStatus.Int()==KErrNotFound) { if (iGetState==EWaitForNotify) { User::Leave(KErrNotFound); } else if (iGetState==EGettingListener) { GetLoca(); } else if (iGetState==EGettingLoca) { SetFilterL(); WaitForNotify(); } return; } if (iAsyncErrorCount>5) User::Leave(iStatus.Int()); ++iAsyncErrorCount; ConnectL(); SetFilterL(); WaitForNotify(); return; } } if (iFullArgs.iTupleName==KListenerStop) { TRequestStatus s; iBBClient.Delete(iFullArgs.iId, s); User::WaitForRequest(s); if (iUnackedCount>0 || iSent==0) { iPendingStop=ETrue; } else { if (!iStopTimer) iStopTimer=CTimeOut::NewL(*this); iStopTimer->Wait(10); } WaitForNotify(); return; } MBBData* d=0; if (iStatus!=EDeleteNotification) { RDesReadStream rs(*iSerializedData); CleanupClosePushL(rs); TTypeName read_type=TTypeName::IdFromStreamL(rs); { d=iFactory->CreateBBDataL(read_type, KEvent, iFactory); CleanupPushBBDataL(d); } { d->InternalizeL(rs); } CleanupStack::Pop(); CleanupStack::PopAndDestroy(); } { iTuple->iData.SetValue(d); iTuple->iTupleMeta.iModuleUid()=iFullArgs.iTupleName.iModule.iUid; iTuple->iTupleMeta.iModuleId()=iFullArgs.iTupleName.iId; iTuple->iTupleMeta.iSubName=iFullArgs.iSubName; if ( iFullArgs.iTupleName == KLastKnownGpsTuple ) { iTuple->iTupleId()=0; } else { iTuple->iTupleId()=iFullArgs.iId; } iTuple->iExpires()=iFullArgs.iLeaseExpires; iFreeBuf->Zero(); iTuple->IntoXmlL(iFreeBuf); iFreeBuf->Characters(_L("\n")); } iUnackedCount++; if (iReadyToWrite) { iWaiting[0]=iFreeBuf; WriteL(); GetOrWaitL(); } else { iWaiting[1]=iFreeBuf; iPendingWrite=ETrue; } }