diff -r bbb64eb3bdee -r a0c4ceac30d0 cmmanager/cmmgr/cmmserver/src/cmmconnmethodstruct.cpp --- a/cmmanager/cmmgr/cmmserver/src/cmmconnmethodstruct.cpp Thu Jun 24 11:36:05 2010 +0300 +++ b/cmmanager/cmmgr/cmmserver/src/cmmconnmethodstruct.cpp Fri Jul 09 10:25:55 2010 +0300 @@ -90,9 +90,10 @@ OstTraceFunctionEntry0( DUP1_CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_ENTRY ); iConnMethodPlugin = NULL; + iReferenceCounter = 0; iBearerType = 0; iStatus = ECmmConnMethodStatusNotSaved; - iReferenceCounter = 0; + iRecordStatus = ECmmRecordStatusBlank; OstTraceFunctionExit0( DUP1_CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_EXIT ); } @@ -172,13 +173,11 @@ } // --------------------------------------------------------------------------- -// Refresh the connection method data in this cache side object to be in synch -// with the database and copy that data back to the session side connection -// method instance given as parameter. +// Reload the connection method data in this cache side object to be in synch +// with the database(only if needed). // --------------------------------------------------------------------------- // -void CCmmConnMethodStruct::RefreshConnMethodInstanceL( - CCmmConnMethodInstance& aConnMethodInstance ) +void CCmmConnMethodStruct::ReloadPluginDataIfNeededL() { OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_REFRESHCONNMETHODINSTANCEL_ENTRY ); @@ -192,12 +191,11 @@ case ECmmConnMethodStatusValid: case ECmmConnMethodStatusToBeDeleted: { - //TODO, add record status check later and only call Reload() if necessary. TCmmRecordStatus - //if ( !aConnMethodStruct->UpToDate() ) - // { + if ( iRecordStatus == ECmmRecordStatusExpired ) + { iConnMethodPlugin->ReLoadL(); - // } - iConnMethodPlugin->GetPluginDataL( aConnMethodInstance.GetPluginDataInstance() ); + SetRecordStatus( ECmmRecordStatusLoaded ); + } } break; case ECmmConnMethodStatusNotSaved: // This is checked before. @@ -207,9 +205,6 @@ break; } - // Internal state need to be set to the same state as after a successfull update. - aConnMethodInstance.UpdateSuccessful(); - OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_REFRESHCONNMETHODINSTANCEL_EXIT ); } @@ -256,16 +251,26 @@ switch ( aStatus ) { - // Fallthrough intended case ECmmConnMethodStatusNotSaved: + { + iStatus = aStatus; + iRecordStatus = ECmmRecordStatusUnsaved; + } + break; case ECmmConnMethodStatusValid: + { iStatus = aStatus; + iRecordStatus = ECmmRecordStatusLoaded; + } break; case ECmmConnMethodStatusChanged: case ECmmConnMethodStatusToBeDeleted: + // Fallthrough intended. default: + { iStatus = ECmmConnMethodStatusChanged; ASSERT( 0 ); // Error, invalid status as argument. + } break; } @@ -307,7 +312,40 @@ { OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_UPDATESUCCESSFUL_ENTRY ); iStatus = ECmmConnMethodStatusValid; + SetRecordStatus( ECmmRecordStatusLoaded ); + OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_UPDATESUCCESSFUL_EXIT ); } +// --------------------------------------------------------------------------- +// Set the record status. +// --------------------------------------------------------------------------- +// +void CCmmConnMethodStruct::SetRecordStatus( const TCmmRecordStatus aStatus ) + { + iRecordStatus = aStatus; + } + +// --------------------------------------------------------------------------- +// Notify about a possible change in database on specified record table. +// --------------------------------------------------------------------------- +// +void CCmmConnMethodStruct::NotifyRecordChange( const TUint32 /*aRecordType*/ ) + { + // Only change status if it is currently ECmmRecordStatusLoaded. + if ( iRecordStatus == ECmmRecordStatusLoaded ) + { + iRecordStatus = ECmmRecordStatusExpired; + } + } + +// --------------------------------------------------------------------------- +// Return the status of the records. +// --------------------------------------------------------------------------- +// +TCmmRecordStatus CCmmConnMethodStruct::GetRecordStatus() const + { + return iRecordStatus; + } + // End of file