--- 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 @@
*
*/
-//<Qmail>
-#include <cmmanager.h>
-//</Qmail>
-
-#include "emailtrace.h"
-#include "IpsSosAOMboxLogic.h"
-//<QMail>
-#include "IpsSosAOSettingsHandler.h"
-//</QMail>
-#include "IpsSosAOSchedulerUtils.h"
-#include "IpsSosAOPlugin.hrh"
-#include "IpsSosAOImapPopLogic.h"
+#include "ipssosaopluginheaders.h"
//<QMail>
const TInt KAOSecondsInMinute = 60;
+const TInt KAODefaultInboxSyncTimeSecs = 3600;
//</QMail>
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 @@
//</QMail>
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");
}
//<QMail>
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 @@
//</Qmail>
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 );
//</QMail>
+ 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 @@
{
//<Qmail>
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);
//</QMail>
+ 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;
}