ncdengine/engine/transport/src/catalogshttpresponsecomposer.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/transport/src/catalogshttpresponsecomposer.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2007-2008 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:   Implements TCatalogsHttpResponseComposer
+*
+*/
+
+
+#include "catalogshttpresponsecomposer.h"
+
+#include "catalogshttpincludes.h"
+#include "catalogsutils.h"
+#include "catalogskeyvaluepair.h"
+#include "catalogshttpmessageconstants.h"
+
+#include "catalogsdebug.h"
+
+
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+HBufC8* TCatalogsHttpResponseComposer::ComposeResponseL( 
+    const MCatalogsHttpOperation& aOperation,
+    const TDesC8& aBody ) const
+    {
+    DLTRACEIN((""));
+    
+    RCatalogsBufferWriter writer;
+    writer.OpenLC();
+        
+    WriteStatusLineL( aOperation, writer() );
+    
+    WriteHeadersL( aOperation, writer() );
+    writer().WriteL( aBody );
+        
+    HBufC8* result = writer.PtrL().AllocL();
+    CleanupStack::PopAndDestroy( &writer );
+    DLINFO(("result: %S", result ));
+    return result;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void TCatalogsHttpResponseComposer::WriteStatusLineL(   
+    const MCatalogsHttpOperation& aOperation,
+    RWriteStream& aStream ) const
+    {
+    // HTTP-version SP Status-Code SP Reason-Phrase CRLF
+    aStream.WriteL( CatalogsHttpMessageConstants::KHttpVersion );
+    aStream.WriteL( CatalogsHttpMessageConstants::KSpace );
+    
+    TBuf8<3> statusBuf;
+    statusBuf.Num( aOperation.StatusCode() );
+    aStream.WriteL( statusBuf );
+    
+    aStream.WriteL( CatalogsHttpMessageConstants::KSpace );
+    aStream.WriteL( aOperation.StatusText() );
+    aStream.WriteL( CatalogsHttpMessageConstants::KCrLf );    
+    
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void TCatalogsHttpResponseComposer::WriteHeadersL(   
+    const MCatalogsHttpOperation& aOperation,
+    RWriteStream& aStream ) const
+    {
+    DLTRACEIN((""));
+    const RPointerArray<CCatalogsKeyValuePair>& headers( 
+        aOperation.ResponseHeadersL().Headers() );
+        
+    DLTRACE(("Writing %d headers", headers.Count() ));
+    for ( TInt i = 0; i < headers.Count(); ++i ) 
+        {
+        WriteHeaderL( *headers[i], aStream );
+        }
+    
+    // End of headers
+    aStream.WriteL( CatalogsHttpMessageConstants::KCrLf );
+    }
+
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void TCatalogsHttpResponseComposer::WriteHeaderL(   
+    const CCatalogsKeyValuePair& aHeader,
+    RWriteStream& aStream ) const
+    {
+    aStream.WriteL( aHeader.Key() );
+    aStream.WriteL( CatalogsHttpMessageConstants::KColon );
+    aStream.WriteL( CatalogsHttpMessageConstants::KSpace );
+    aStream.WriteL( aHeader.Value() );
+    aStream.WriteL( CatalogsHttpMessageConstants::KCrLf );
+    }