ncdengine/engine/transport/src/catalogshttpconfigimpl.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/transport/src/catalogshttpconfigimpl.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,402 @@
+/*
+* Copyright (c) 2006 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 <e32cmn.h>
+#include <s32strm.h>
+
+#include "catalogshttpconfigimpl.h"
+#include "catalogskeyvaluepair.h"
+#include "catalogshttpobserver.h"
+#include "catalogshttpheadersimpl.h"
+#include "catalogshttpconfigobserver.h"
+#include "catalogsutils.h"
+
+#include "catalogsdebug.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig* CCatalogsHttpConfig::NewL( 
+    MCatalogsHttpConfigObserver* aObserver)
+    {
+    CCatalogsHttpConfig* self = new ( ELeave ) CCatalogsHttpConfig( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig* CCatalogsHttpConfig::NewL( 
+    RReadStream& aStream,
+    MCatalogsHttpConfigObserver* aObserver)
+    {
+    CCatalogsHttpConfig* self = new ( ELeave ) CCatalogsHttpConfig( 
+        aObserver );
+    CleanupStack::PushL( self );    
+    self->InternalizeL( aStream );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig::~CCatalogsHttpConfig()
+    {    
+    delete iFilename;    
+    delete iDirectory;
+   
+    // Delete headers
+    delete iHeaders;   
+    }
+        
+    
+// ---------------------------------------------------------------------------
+// Priority setter
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetPriority( TCatalogsTransportPriority aPriority )
+    {
+    if ( aPriority != iPriority ) 
+        {        
+        iPriority = aPriority;
+        
+        // Notify the operation of a priority change
+        if ( iOwnObserver ) 
+            {            
+            iOwnObserver->HandleHttpConfigEvent( this, 
+                ECatalogsHttpCfgPriorityChanged );
+            }
+        }
+    }
+    
+        
+// ---------------------------------------------------------------------------
+// Priority getter
+// ---------------------------------------------------------------------------
+//	
+TCatalogsTransportPriority CCatalogsHttpConfig::Priority() const
+    {
+    return iPriority;
+    }
+        
+        
+// ---------------------------------------------------------------------------
+// Directory path setter
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetDirectoryL( const TDesC& aDirectory )
+    {
+    if( aDirectory.Length() )
+        {
+        HBufC* temp = aDirectory.AllocL();
+        delete iDirectory;
+        iDirectory = NULL;
+        iDirectory = temp;
+        }
+    else 
+        {
+        delete iDirectory;
+        iDirectory = NULL;
+        }        
+    }
+
+
+// ---------------------------------------------------------------------------
+// Directory path getter
+// ---------------------------------------------------------------------------
+//	
+const TDesC& CCatalogsHttpConfig::Directory() const
+    {
+    if( iDirectory ) 
+        {
+        return *iDirectory;
+        }
+        
+    return KNullDesC();
+    }
+
+
+// ---------------------------------------------------------------------------
+// Filename setter
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetFilenameL( const TDesC& aFilename )
+    {
+    if( aFilename.Length() ) 
+        {
+        HBufC* temp = aFilename.AllocL();
+        delete iFilename;
+        iFilename = NULL;
+        iFilename = temp;
+        }
+    else 
+        {
+        // aFilename is empty so we delete the old filename
+        delete iFilename;
+        iFilename = NULL;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// Filename getter
+// ---------------------------------------------------------------------------
+//	
+const TDesC& CCatalogsHttpConfig::Filename() const
+    {
+    if( iFilename ) 
+        {
+        return *iFilename;
+        }
+    return KNullDesC();
+    }
+
+
+// ---------------------------------------------------------------------------
+// Full path
+// ---------------------------------------------------------------------------
+//	
+HBufC* CCatalogsHttpConfig::FullPathLC() const    
+    {
+    DLTRACEIN((""));
+    if ( iDirectory == NULL
+         || iDirectory->Length() == 0
+         || iFilename == NULL
+         || iFilename->Length() == 0 )
+        {
+        // Directory and filename should always be set.
+        // NULL or empty values are not accepted.
+        User::Leave( KErrPathNotFound );
+        }
+    
+    HBufC* fullpath = HBufC::NewLC( iDirectory->Length() 
+        + iFilename->Length() );
+    TPtr ptr( fullpath->Des() );
+    
+    ptr.Append( *iDirectory );
+    ptr.Append( *iFilename );
+    DLTRACEOUT(( _L("Path: %S"), fullpath ));
+    return fullpath;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Headers getter
+// ---------------------------------------------------------------------------
+//	
+MCatalogsHttpHeaders& CCatalogsHttpConfig::RequestHeaders() const
+    {
+    return *iHeaders;
+    }
+
+        
+// ---------------------------------------------------------------------------
+// Accesspoint setter
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetConnectionMethod( 
+    const TCatalogsConnectionMethod& aMethod )
+    {
+    iConnectionMethod = aMethod;
+    }
+        
+        
+// ---------------------------------------------------------------------------
+// Access point getter
+// ---------------------------------------------------------------------------
+//	
+const TCatalogsConnectionMethod& CCatalogsHttpConfig::ConnectionMethod() const
+    {
+    return iConnectionMethod;
+    }
+          
+
+// ---------------------------------------------------------------------------
+// Observer setter
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetObserver( MCatalogsHttpObserver* aObserver )
+    {
+    iObserver = aObserver;
+    }
+          
+
+// ---------------------------------------------------------------------------
+// Observer getter
+// ---------------------------------------------------------------------------
+//	
+MCatalogsHttpObserver* CCatalogsHttpConfig::Observer() const
+    {
+    return iObserver;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Set HTTP method
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::SetHttpMethod( TCatalogsHttpMethod aMethod )
+    {
+    iHttpMethod = aMethod;    
+    }
+
+
+// ---------------------------------------------------------------------------
+// Get HTTP method
+// ---------------------------------------------------------------------------
+//	
+TCatalogsHttpMethod CCatalogsHttpConfig::HttpMethod() const
+    {
+    return iHttpMethod;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Externalize
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::ExternalizeL( RWriteStream& aStream ) const
+    {
+    DLTRACEIN((""));
+    aStream.WriteInt32L( iPriority );
+    ExternalizeDesL( Directory(), aStream );
+    ExternalizeDesL( Filename(), aStream );
+    iHeaders->ExternalizeL( aStream );
+    iConnectionMethod.ExternalizeL( aStream );    
+    aStream.WriteInt32L( iHttpMethod );
+    aStream.WriteUint32L( iOptions );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Internalize
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::InternalizeL( RReadStream& aStream )
+    {
+    DLTRACEIN((""));
+    iPriority = static_cast<TCatalogsTransportPriority>( 
+        aStream.ReadInt32L() );
+    InternalizeDesL( iDirectory, aStream );
+    InternalizeDesL( iFilename, aStream );
+    
+    delete iHeaders;
+    iHeaders = NULL;
+    
+    iHeaders = CCatalogsHttpHeaders::NewL( aStream );
+    iConnectionMethod.InternalizeL( aStream );
+    iHttpMethod = static_cast<TCatalogsHttpMethod>( aStream.ReadInt32L() );
+    iOptions = aStream.ReadUint32L();
+    }
+
+
+// ---------------------------------------------------------------------------
+// Options getter
+// ---------------------------------------------------------------------------
+//  
+TUint32 CCatalogsHttpConfig::Options() const
+    {
+    return iOptions;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Options setter
+// ---------------------------------------------------------------------------
+//  
+void CCatalogsHttpConfig::SetOptions( TUint32 aOptions )
+    {
+    iOptions = aOptions;
+    }
+
+    
+// ---------------------------------------------------------------------------
+// Cloner
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig* CCatalogsHttpConfig::CloneL() const
+    {
+    CCatalogsHttpConfig* copy = new( ELeave ) CCatalogsHttpConfig( *this );
+    CleanupStack::PushL( copy );
+    copy->ConstructL( *this );
+    CleanupStack::Pop( copy );
+    return copy;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig::CCatalogsHttpConfig( MCatalogsHttpConfigObserver* aObserver ) : 
+    iOwnObserver( aObserver ), iPriority( ECatalogsPriorityMedium ), 
+    iHttpMethod( ECatalogsHttpPost )    
+    {
+    }
+        
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::ConstructL()
+    {
+    iHeaders = CCatalogsHttpHeaders::NewL();
+    iFilename = KNullDesC().AllocL();
+    iDirectory = KNullDesC().AllocL();
+    }
+        
+        
+// ---------------------------------------------------------------------------
+// Copy constructor
+// ---------------------------------------------------------------------------
+//	
+CCatalogsHttpConfig::CCatalogsHttpConfig( const CCatalogsHttpConfig& aOther ): 
+    iOwnObserver( aOther.iOwnObserver ),
+    iPriority( aOther.iPriority ), 
+    iConnectionMethod( aOther.iConnectionMethod ), 
+    iObserver( aOther.iObserver ), 
+    iHttpMethod ( aOther.iHttpMethod ),
+    iOptions( aOther.iOptions )
+    {
+    }
+        
+        
+// ---------------------------------------------------------------------------
+// 2nd phase of copy construction
+// ---------------------------------------------------------------------------
+//	
+void CCatalogsHttpConfig::ConstructL( const CCatalogsHttpConfig& aOther )
+    {
+    iFilename = aOther.Filename().AllocL();        
+    iDirectory = aOther.Directory().AllocL();
+
+    // Copy headers
+    iHeaders = aOther.iHeaders->CloneL();    
+    }