--- /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 );
+ }