--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/httpfilters/cookie/ManagerSrc/CookieClientDataArray.cpp Wed Mar 31 22:32:15 2010 +0300
@@ -0,0 +1,255 @@
+/*
+ * CookieClientDataArray.cpp
+ *
+ * Created on: Dec 18, 2009
+ * Author: mohanti
+ */
+
+//System Includes
+#include <e32cmn.h>
+#include <e32base.h>
+#include <e32std.h>
+
+//User Includes
+#include "CookieClientDataArray.h"
+#include "CookieManagerClient.h"
+#include "CookieArray.h"
+#include "CookieLogger.h"
+#include "CookieClientData.h"
+
+//Constatnts
+const TInt KCookieArrayGranularity = 10;
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::GetInstance
+// ---------------------------------------------------------
+//
+CCookieClientDataArray* CCookieClientDataArray::GetInstance()
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::GetInstance" ) ) );
+ CCookieClientDataArray *clientInstance = static_cast<CCookieClientDataArray*> (Dll::Tls());
+ if (!clientInstance)
+ {
+ clientInstance = new (ELeave) CCookieClientDataArray();
+ Dll::SetTls(clientInstance);
+ }
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::GetInstance instance = %x" ),clientInstance ) );
+ return clientInstance;
+ }
+// ---------------------------------------------------------
+// CCookieClientDataArray::DeRef
+// ---------------------------------------------------------
+//
+void CCookieClientDataArray::DeRef()
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::Deref" ) ) );
+ --iRefCount;
+ if (iRefCount <= 0)
+ {
+ delete iCookieClientData;
+ iCookieClientData = NULL;
+ Dll::SetTls(0);
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Deref deletes iCookieClientData" ) ) );
+ }
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Deref" ) ) );
+ }
+// ---------------------------------------------------------
+// CCookieClientDataArray::ConstructL
+// ---------------------------------------------------------
+//
+CCookieClientDataArray::CCookieClientDataArray():iRefCount(0)
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::ConstructL" ) ) );
+ iCookieClientData = new (ELeave) RPointerArray<CCookieClientData>(KCookieArrayGranularity);
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::ConstructL" ) ) );
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::~CCookieClientDataArray
+// ---------------------------------------------------------
+//
+CCookieClientDataArray::~CCookieClientDataArray()
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::~CCookieClientDataArray" ) ) );
+ if(iCookieClientData && iCookieClientData->Count())
+ {
+ iCookieClientData->ResetAndDestroy();
+ iCookieClientData->Close();
+ //delete iCookieClientData;
+ iCookieClientData = NULL;
+ }
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::~CCookieClientDataArray" ) ) );
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::Count
+// ---------------------------------------------------------
+//
+TInt CCookieClientDataArray::Count()const
+ {
+ if (iCookieClientData)
+ return iCookieClientData->Count();
+ else
+ return 0;
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::Compress
+// ---------------------------------------------------------
+//
+void CCookieClientDataArray::AddClientGroupDataL(CCookieClientData* aCookieClientData)
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::AddGroupDataL" ) ) );
+ iCookieClientData->AppendL(aCookieClientData);
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::AddGroupDataL" ) ) );
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::Compress
+// ---------------------------------------------------------
+//
+void CCookieClientDataArray::Compress()
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::Compress" ) ) );
+ iCookieClientData->Compress();
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Compress" ) ) );
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::operator[]
+// ---------------------------------------------------------
+//
+CCookieClientData* CCookieClientDataArray::operator[](TInt aIndex) const
+ {
+ return (*iCookieClientData)[aIndex];
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::At
+// ---------------------------------------------------------
+//
+CCookieClientData* CCookieClientDataArray::At(TInt aIndex) const
+ {
+ return (*iCookieClientData)[ aIndex ];
+ }
+// ---------------------------------------------------------
+// CCookieClientDataArray::Find
+// ---------------------------------------------------------
+//
+CCookieClientData* CCookieClientDataArray::Find(const TUint32& aGroupId, const TUint32& aWidgetUid )
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::Find GroupId = %x, WidgetUid = %x" ),aGroupId,aWidgetUid ) );
+ TInt total = Count();
+ TBool WidgetUidFound = EFalse;
+ TInt index = 0;
+ for ( TInt i = 0;i<total;i++ )
+ {
+ if (At(i)->GetGroupId()== aGroupId && (At(i)->GetCookieSharableFlag()))
+ {
+ WidgetUidFound = ETrue;
+ index = i;
+ break;
+ }
+ else if (At(i)->GetGroupId()== aGroupId && !(At(i)->GetCookieSharableFlag())
+ && (At(i)->GetWidgetUid()== aWidgetUid))
+ {
+ WidgetUidFound = ETrue;
+ index = i;
+ break;
+ }
+ }
+ if ( WidgetUidFound )
+ {
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Find found with index = %d" ),index ) );
+ return At(index);
+ }
+ else
+ {
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Find not found " ) ) );
+ return NULL;
+ }
+ }
+// ---------------------------------------------------------
+// CCookieClientDataArray::FindIndex
+// ---------------------------------------------------------
+//
+TInt CCookieClientDataArray::FindIndex(const TUint32& aGroupId, const TUint32& aWidgetUid,TInt& aIndex )
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::FindIndex GroupId = %x,WidgetUid = %x" )
+ ,aGroupId,aWidgetUid ) );
+ TInt total = Count();
+ TBool WidgetUidFound = EFalse;
+ TInt index = 0;
+ for ( TInt i = 0;i<total;i++ )
+ {
+ if (At(i)->GetGroupId()== aGroupId && (At(i)->GetCookieSharableFlag()))
+ {
+ WidgetUidFound = ETrue;
+ index = i;
+ break;
+ }
+ else if (At(i)->GetGroupId()== aGroupId && !(At(i)->GetCookieSharableFlag())
+ && (At(i)->GetWidgetUid()== aWidgetUid))
+ {
+ WidgetUidFound = ETrue;
+ index = i;
+ break;
+ }
+ }
+ if ( WidgetUidFound )
+ {
+ aIndex = index;
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::FindIndex found with index = %d" ),index ) );
+ return KErrNone;
+ }
+ else
+ {
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::FindIndex not found " ) ) );
+ return KErrNotFound;
+ }
+ }
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::CookieArray
+// ---------------------------------------------------------
+//
+CCookieArray* CCookieClientDataArray::CookieArray(TInt aIndex)
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::CookieArray Index =%d" ),aIndex ) );
+ CCookieClientData* cookieclientdata = At(aIndex);
+ return cookieclientdata->CookieArray();
+ }
+
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::Remove
+// ---------------------------------------------------------
+//
+void CCookieClientDataArray::Remove(TInt aIndex)
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::Remove %d" ), aIndex ) );
+ delete (*iCookieClientData)[ aIndex ];
+ iCookieClientData->Remove(aIndex);
+ iCookieClientData->Compress();
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::Remove " )) );
+ }
+
+
+// ---------------------------------------------------------
+// CCookieClientDataArray::DestroyGroupData
+// ---------------------------------------------------------
+//
+TInt CCookieClientDataArray::DestroyClientData(const TUint32 aAppUid)
+ {
+ CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::DestroyClientData" ) ) );
+ TUint32 groupid = RProcess().SecureId().iId;
+ TInt index = -1;
+ TInt err = FindIndex(groupid,aAppUid,index);
+ if ( err == KErrNone )
+ {
+ Remove(index);
+ }
+ CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::DestroyClientData removed index = %d" ),index ) );
+ return err;
+ }
+//EOF