diff -r 997a02608b3a -r 16ed8d08d0b1 ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp --- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp Tue Jul 06 14:04:34 2010 +0300 +++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp Wed Aug 18 09:37:47 2010 +0300 @@ -16,21 +16,11 @@ * */ -// -#include -// - -#include "emailtrace.h" -#include "IpsSosAOMboxLogic.h" -// -#include "IpsSosAOSettingsHandler.h" -// -#include "IpsSosAOSchedulerUtils.h" -#include "IpsSosAOPlugin.hrh" -#include "IpsSosAOImapPopLogic.h" +#include "ipssosaopluginheaders.h" // const TInt KAOSecondsInMinute = 60; +const TInt KAODefaultInboxSyncTimeSecs = 3600; // const TInt KIpsSosAOMboxLogicMinGra = 1; @@ -319,11 +309,14 @@ ( (iIsRoaming && CanConnectIfRoamingL())|| !iIsRoaming ) ) { + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStart"); event = EEventNop; iAgent->LoadSettingsL(); iTimer->Cancel(); + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOStartDelaySeconds); iTimer->After( KIpsSosAOStartDelaySeconds ); iState = EStateWaitSyncStart; + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); } while ( event != EEventNop && iState != EStateError ) @@ -331,14 +324,17 @@ switch ( event ) { case EEventTimerFired: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventTimerFired"); event = HandleTimerFiredL(); break; case EEventStartSync: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStartSync"); if ( iState == EStateWaitSyncStart ) { iError = KErrNone; iAgent->StartSyncL(); iState = EStateSyncOngoing; + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing"); } else if ( iState == EStateIdleAndWaitCommands ) { @@ -360,7 +356,9 @@ // if ( type == EAOCConnectAfter ) { + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", seconds); iTimer->After( seconds ); SetEmnReceivedFlagL( ETrue ); @@ -370,6 +368,7 @@ iError = KErrNone; iAgent->StartSyncL(); iState = EStateSyncOngoing; + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing"); } // CleanupStack::PopAndDestroy( 2, settings ); @@ -379,6 +378,7 @@ event = EEventNop; break; case EEventFetchMessages: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventFetchMessages"); if ( ( iState == EStateWaitSyncStart || iState == EStateIdleAndWaitCommands ) && iFetchMsgArray.Count() > 0 ) @@ -386,6 +386,7 @@ iError = KErrNone; iAgent->StartFetchMessagesL( iFetchMsgArray ); iFetchMsgArray.Reset(); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateFetchOngoing"); iState = EStateFetchOngoing; } else @@ -396,16 +397,20 @@ event = EEventNop; break; case EEventOperationCompleted: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventOperationCompleted"); event = HandleOperationCompletionL(); break; case EEventSuspendOperations: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventSuspendOperations"); SuspendOperations(); iState = EStateSuspended; event = EEventNop; break; case EEventContinueOperations: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventContinueOperations"); if ( iState == EStateSuspended ) { + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOContinueWaitTime); iTimer->After( KIpsSosAOContinueWaitTime ); } else @@ -415,9 +420,11 @@ // ignore if in other states break; case EEventStopAndRemoveOps: + NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStopAndRemoveOps"); // notify deletion iAgent->CancelAllAndDisconnectL(); iTimer->Cancel(); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateError"); iState = EStateError; event = EEventNop; break; @@ -475,12 +482,14 @@ agentState == CIpsSosAOBaseAgent::EStatePopulateOnHold ) ) { iAgent->ContinueHoldOperations(); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSyncOngoing"); iState = EStateSyncOngoing; } else if ( iState == EStateSuspended && agentState == CIpsSosAOBaseAgent::EStateFetchOnHold ) { iAgent->ContinueHoldOperations(); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateFetchOngoing"); iState = EStateFetchOngoing; } else @@ -506,12 +515,18 @@ // if ( iState == EStateSyncOngoing ) { + INFO_1("CIpsSosAOMBoxLogic: operation completed error: %d", iError); + bool doSaveSyncTime = EFalse; if ( !( iError == KErrNone || iError == KErrCancel ) ) { ++iErrorCounter; } else { + if (iError == KErrNone) + { + doSaveSyncTime = ETrue; + } iError = KErrNone; iErrorCounter = 0; } @@ -529,6 +544,7 @@ settings->SetEmnReceivedButNotSyncedFlag( EFalse ); // + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateError"); iState = EStateError; iErrorCounter = 0; } @@ -542,14 +558,17 @@ if ( state == IpsServices::EMailAoOff ) { + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands"); iState = EStateIdleAndWaitCommands; } else { if( !iTimer->IsActive() ) { + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOReTryInterval); iTimer->After( KIpsSosAOReTryInterval ); } + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; } @@ -567,7 +586,10 @@ { // no errors // update successfull sync time to settings - SaveSuccessfulSyncTimeL(); + if (doSaveSyncTime) + { + SaveSuccessfulSyncTimeL(); + } // and adjust timer to sync interval CalculateToNextIntervalL(); } @@ -577,6 +599,7 @@ iError = KErrNone; if ( iTimer->IsActive() ) { + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; } else @@ -600,11 +623,13 @@ { iAgent->HoldOperations(); } + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateSuspended"); iState = EStateSuspended; // set suspend watchdog, if clien not continue this // ensure ao logic to continue if ( !iTimer->IsActive() ) { + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", KIpsSosAOSuspendWatchdogTime); iTimer->After( KIpsSosAOSuspendWatchdogTime ); } } @@ -649,7 +674,7 @@ { // FUNC_LOG; - iTimer->Cancel(); + iTimer->Cancel(); TMBoxLogicEvent event = EEventNop; TTimeIntervalSeconds secondsToConnect = CalculateScheduledSyncTimeL(); @@ -679,7 +704,10 @@ secsFromLastSync.Int() < interval ) ) { // adjust timer to correct sync time - iTimer->After(interval - secsFromLastSync.Int()); + TInt syncAfter = interval - secsFromLastSync.Int(); + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", syncAfter); + iTimer->After(syncAfter); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; } else @@ -692,6 +720,7 @@ else if ( secondsToConnect.Int() == KErrNotFound ) { // means that ao is not on (but emn is) + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands"); iState = EStateIdleAndWaitCommands; if ( settings->EmnReceivedButNotSyncedFlag() ) @@ -702,7 +731,9 @@ } else { + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", secondsToConnect); iTimer->After( secondsToConnect ); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; @@ -734,19 +765,36 @@ CIpsSosAOSettingsHandler* settings = CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId); CleanupStack::PushL(settings); - iTimer->After( - settings->InboxRefreshTime() * KAOSecondsInMinute ); + TInt inboxRefreshTime = settings->InboxRefreshTime(); + TInt secs = inboxRefreshTime * KAOSecondsInMinute; + INFO_1("CIpsSosAOMBoxLogic: inboxRefreshTime: %d", inboxRefreshTime); + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", secs); + if (secs > 0) + { + iTimer->After(TTimeIntervalSeconds(secs)); + } + else + { + // panic at this point when we get zero time from settings + __ASSERT_DEBUG( EFalse, User::Panic( KIpsSosAOPanicLit, KErrGeneral) ); + iTimer->After(TTimeIntervalSeconds(KAODefaultInboxSyncTimeSecs)); + } + CleanupStack::PopAndDestroy(settings); // + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; } else if ( interval.Int() > 0 ) { + INFO_1("CIpsSosAOMBoxLogic: timer scheduled: %d", interval); iTimer->After( interval ); + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateWaitSyncStart"); iState = EStateWaitSyncStart; } else { + NM_COMMENT("CIpsSosAOMBoxLogic: switching state: EStateIdleAndWaitCommands"); iState = EStateIdleAndWaitCommands; }