messagingfw/msgsrvnstore/server/inc/msvcacheentry.inl
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgsrvnstore/server/inc/msvcacheentry.inl	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,327 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// INLINE FUNCTIONS
+// 
+//
+
+/**
+ 
+ Entry()
+ @param None.
+ @return TMsvEntry& : a handle to the TMsvEntry of the cache entry.
+ 
+ The function returns a handle to the TMsvEntry of the cache entry.
+ 
+*/
+inline TMsvEntry& CMsvCacheEntry::Entry()
+	{
+	return iEntry;
+	}
+
+
+
+/**
+ * GetId()
+ * @param None.
+ * @return TMsvId: TMsvId of the entry
+ * 
+ * The function returns the TMsvId of the entry.
+ */
+inline TMsvId CMsvCacheEntry::GetId() const
+	{
+	return iEntry.Id();
+	}
+
+
+
+/**
+ * IsEntryLocked()
+ * @param None.
+ * @return TBool : ETrue if the entry has been locked, EFalse otherwise.
+ * 
+ * The function returns the value of the EMsvServerEntryLockFlag flag,
+ * which represents whether the cache entry has been locked or not.
+ */
+inline TBool CMsvCacheEntry::IsEntryLocked() const
+	{
+	return iFlags & EMsvServerEntryLockFlag;
+	}
+
+
+
+/**
+ * ReleaseEntry()
+ * @param None.
+ * @return None.
+ * 
+ * The function resets the value of the EMsvServerEntryLockFlag flag, i.e releases
+ * the lock on the cache entry.
+ */
+inline void CMsvCacheEntry::ReleaseEntry()
+	{
+	__ASSERT_DEBUG(IsEntryLocked(), PanicServer(EMsvReleasingEntryNotLocked));
+	iFlags = iFlags & ~EMsvServerEntryLockFlag;
+	}
+
+
+
+/**
+ * IsStoreLocked()
+ * @param None.
+ * @return TBool : ETrue if the server entry has been locked, EFalse otherwise.
+ * 
+ * The function returns the value of the EMsvServerEntryStoreLockFlag flag,
+ * which represents whether the server entry has been locked or not.
+ */
+inline TBool CMsvCacheEntry::IsStoreLocked() const
+	{
+	return iFlags & EMsvServerEntryStoreLockFlag;
+	}
+
+
+
+/**
+ * ReleaseStore()
+ * @param None.
+ * @return None.
+ * 
+ * The function resets the value of the EMsvServerEntryStoreLockFlag flag, i.e releases
+ * the lock on the server entry.
+ */
+inline void CMsvCacheEntry::ReleaseStore()
+	{
+	__ASSERT_DEBUG(IsStoreLocked(), PanicServer(EMsvReleasingStoreNotLocked));
+	iFlags = iFlags & ~EMsvServerEntryStoreLockFlag;
+	}
+
+
+
+/**
+ * IsStoreReadingLocked()
+ * @param None.
+ * @return TBool : ETrue if there are no readers to the store, EFalse otherwise.
+ * 
+ * The function returns ETrue if the number of readers to the store (iStoreReaderCount)
+ * is 0, EFalse if otherwise.
+ */
+inline TBool CMsvCacheEntry::IsStoreReadingLocked() const
+	{
+	return iStoreReaderCount == 0 ? EFalse : ETrue;
+	}
+
+
+
+/**
+ * IncStoreReaderCount()
+ * @param None.
+ * @return None.
+ * 
+ * The function increments the number of readers to the store (iStoreReaderCount).
+ */
+inline void CMsvCacheEntry::IncStoreReaderCount()
+	{
+	iStoreReaderCount++;
+	}
+
+
+
+/**
+ * DecStoreReaderCount()
+ * @param None.
+ * @return None.
+ * 
+ * The function decrements the number of readers to the store (iStoreReaderCount).
+ */
+inline void CMsvCacheEntry::DecStoreReaderCount()
+	{
+	__ASSERT_DEBUG(iStoreReaderCount>0, User::Invariant());
+
+	iStoreReaderCount--;
+	}
+
+
+
+/**
+ * IsEntryOrStoreLocked()
+ * @param None.
+ * @return TBool : ETrue if the server OR cache entries have been locked, EFalse otherwise.
+ * 
+ * The function returns ETrue if either of store and cache entries have been locked,
+ * EFalse if neither are locked.
+ */
+inline TBool CMsvCacheEntry::IsEntryOrStoreLocked() const
+	{
+	return iFlags & (EMsvServerEntryStoreLockFlag | EMsvServerEntryLockFlag);
+	}
+
+
+
+/**
+ * IsEntryAndStoreLocked()
+ * @param None.
+ * @return TBool : ETrue if the server AND cache entries have been locked, EFalse otherwise.
+ * 
+ * The function returns ETrue if both the store and cache entries have been locked,
+ * EFalse if only one of them are locked.
+ */
+inline TBool CMsvCacheEntry::IsEntryAndStoreLocked() const
+	{
+	return IsEntryLocked() && IsStoreLocked();
+	}
+
+
+
+/**
+ * ReleaseEntryAndStore()
+ * @param None.
+ * @return None.
+ * 
+ * The function resets the value of the EMsvServerEntryLockFlag and
+ * EMsvServerEntryStoreLockFlag flags, i.e releases the lock on the server 
+ * and cache entries.
+ */
+inline void CMsvCacheEntry::ReleaseEntryAndStore()
+	{
+	__ASSERT_DEBUG(IsEntryOrStoreLocked(), PanicServer(EMsvReleasingStoreNotLocked));
+	iFlags = iFlags & ~(EMsvServerEntryStoreLockFlag|EMsvServerEntryLockFlag);
+	}
+
+
+
+/**
+ * CreatedDate()
+ * @param None.
+ * @return TMsvTime& : a reference to the creation time and date of the entry.
+ * 
+ * The function returns a reference to the creation time and date of the entry.
+ */
+inline const TMsvTime& CMsvCacheEntry::CreatedDate() const
+	{
+	return iCreated;
+	}
+
+
+
+/**
+ * SetCreatedDate()
+ * @param TMsvTime& : a reference to the creation time and date of the entry.
+ * @return None.
+ * 
+ * The function sets the creation time and date of the entry to the passed value.
+ */
+inline void CMsvCacheEntry::SetCreatedDate(const TMsvTime& aTime)
+	{
+	iCreated = aTime;
+	}
+
+
+
+/**
+ * LastChangeDate()
+ * @param None.
+ * @return TMsvTime& : a reference to the last change time and date of the entry.
+ * 
+ * The function returns a reference to the last change time and date of the entry.
+ */
+inline const TMsvTime& CMsvCacheEntry::LastChangeDate() const
+	{
+	return iLastChange;
+	}
+
+
+
+/**
+ * SetLastChangeDate()
+ * @param TMsvTime& : a reference to the last change time and date of the entry.
+ * @return None.
+ * 
+ * The function sets the last change time and date of the entry to the passed value.
+ */
+inline void CMsvCacheEntry::SetLastChangeDate(const TMsvTime& aTime)
+	{
+	iLastChange = aTime;
+	}
+
+
+
+/**
+ * EntryOwnerId()
+ * @param None.
+ * @return TSecureId : TSecureId of the owner of the cache entry.
+ * 
+ * The function returns the TSecureId of the owner of the cache entry.
+ */
+inline TSecureId CMsvCacheEntry::EntryOwnerId() const
+	{
+	return iOwnerId;
+	}
+
+
+
+/**
+ * SetEntryOwnerId()
+ * @param TSecureId : TSecureId of the owner of the cache entry.
+ * @return None.
+ * 
+ * The function sets the TSecureId of the owner of the cache entry.
+ */
+inline void CMsvCacheEntry::SetEntryOwnerId(TSecureId aOwnerId)
+	{
+	iOwnerId = aOwnerId;
+	}
+
+
+
+/**
+ * ChildIdArray()
+ * @param None.
+ * @return RArray<TMsvId>* : a handle to the iChildIdArray of the cache entry.
+ * 
+ * The function returns a handle to the iChildIdArray of the cache entry, which
+ * is an array of child entries of this cache entry.
+ */
+inline RArray<TMsvId>* CMsvCacheEntry::ChildIdArray()
+	{
+	return iChildIdArray;
+	}
+	
+	
+/**
+ * SetChildIdArray()
+ * @param RArray<TMsvId>*: pointer to the child array
+ * @return None.
+ *
+ * The function sets the child array of the cache entry to the child array passed.
+ */
+inline void CMsvCacheEntry::SetChildIdArray(RArray<TMsvId>* aChildIdArray)
+	{
+	iChildIdArray = aChildIdArray;
+	}
+ 
+
+
+
+
+/**
+ * IsEntrySwappable()
+ * @return TBool: Returns ETrue if entry can be swappend out of cache.
+ *
+ * The function will mainly be used by cache related code
+ * which will check if the entry can be swapped out.
+ */
+inline TBool CMsvCacheEntry::IsEntrySwappable() const
+	{
+	return !(IsEntryOrStoreLocked() || IsStoreReadingLocked());
+	}
+