--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httpexamples/cookies/inc/ccookie.inl Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,116 @@
+// Copyright (c) 2001-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:
+//
+
+#include <httpstringconstants.h>
+
+inline CCookie* CCookie::NewL(RStringPool aStringPool, RString aName, RString aValue, TBool aCookie2)
+ {
+ CCookie* cookie = new(ELeave)CCookie(aStringPool, aCookie2);
+ CleanupStack::PushL(cookie);
+ cookie->ConstructL(aName, aValue);
+ CleanupStack::Pop(cookie);
+ return cookie;
+ }
+
+inline CCookie::CCookie(RStringPool aStringPool, TBool aCookie2) :
+ iStringPool(aStringPool),
+ iSetCookie2(aCookie2)
+ {
+ }
+
+inline CCookie::~CCookie()
+ {
+ // go through each attribute closing any attribute strings
+ const TInt numAttributes= iAttributes.Count();
+ for (TInt ii=0; ii<numAttributes; ++ii)
+ CloseAttribute(iAttributes[ii]);
+ iAttributes.Reset();
+ }
+
+inline void CCookie::CloseAttribute(CCookie::TCookieAttribute aCookieAttribute)
+ {
+ THTTPHdrVal attributeVal = aCookieAttribute.iValue;
+ if (attributeVal.Type() == THTTPHdrVal::KStrVal)
+ attributeVal.Str().Close();
+ else if (attributeVal.Type() == THTTPHdrVal::KStrFVal)
+ attributeVal.StrF().Close();
+ }
+
+inline void CCookie::ConstructL(RString aName, RString aValue)
+ {
+ THTTPHdrVal value(aName);
+ SetAttributeL(EName, value);
+ value.SetStr(aValue);
+ SetAttributeL(EValue, value);
+ }
+
+inline void CCookie::SetAttributeL(CCookie::TCookieAttributeName aAttributeName,
+ THTTPHdrVal aAttributeVal)
+ {
+ TCookieAttribute attribute;
+ TInt index = FindAttribute(aAttributeName, attribute);
+ if(index != KErrNotFound)
+ {
+ CloseAttribute(attribute);
+ iAttributes.Remove(index);
+ }
+
+ TCookieAttribute newAttribute(aAttributeName, aAttributeVal);
+ User::LeaveIfError(iAttributes.Append(newAttribute));
+ }
+
+inline TInt CCookie::Attribute(CCookie::TCookieAttributeName aAttributeName,
+ THTTPHdrVal& aAttributeVal) const
+ {
+ TCookieAttribute attribute;
+ if(FindAttribute(aAttributeName, attribute) != KErrNotFound)
+ {
+ aAttributeVal = attribute.iValue;
+ return KErrNone;
+ }
+
+ return KErrNotFound;
+ }
+
+inline TInt CCookie::FindAttribute(TCookieAttributeName aAttributeName, TCookieAttribute& aAttribute) const
+ {
+ const TInt numAttributes = iAttributes.Count();
+ for (TInt index = 0; index<numAttributes; ++index)
+ {
+ if (iAttributes[index].iName == aAttributeName)
+ {
+ aAttribute = iAttributes[index];
+ return index;
+ }
+ }
+
+ return KErrNotFound;
+ }
+
+inline TBool CCookie::FromCookie2() const
+ {
+ return iSetCookie2;
+ }
+
+inline CCookie::TCookieAttribute::TCookieAttribute(TCookieAttributeName aName, THTTPHdrVal aHdrVal) :
+iName(aName)
+ {
+ iValue = aHdrVal.Copy();
+ }
+
+inline CCookie::TCookieAttribute::TCookieAttribute()
+ {
+ }
+