internetradio2.0/dataprovidersrc/irhttppost.cpp
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/dataprovidersrc/irhttppost.cpp	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2006-2007 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:  ?Description
+*
+*/
+
+
+#include <coemain.h>
+
+#include "irdebug.h"
+#include "irhttppost.h"
+#include "irsettings.h"
+#include "irreportsettings.h"
+
+// Maximum data part size.
+const TInt KMaxSubmitSize = 1024;
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::NewL()
+// First phase constructor
+//----------------------------------------------------------------------------
+//
+CIRHttpPost* CIRHttpPost::NewL( const RHTTPTransaction& aHttpTransaction )
+	{
+	IRLOG_DEBUG( "CIRHttpPost::NewL - Entering" );
+	CIRHttpPost* self = new( ELeave ) CIRHttpPost( aHttpTransaction );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	IRLOG_DEBUG( "CIRHttpPost::NewL - Exiting" );
+	return self;
+	}
+//----------------------------------------------------------------------------
+// CIRHttpPost::ConstructL()
+// 2nd phase constructor
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::ConstructL()
+	{
+	IRLOG_DEBUG( "CIRHttpPost::ConstructL - Entering" );
+	iSettings = CIRSettings::OpenL();
+	IRLOG_DEBUG( "CIRHttpPost::ConstructL - Exiting" );
+	}
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetDataPartFromFileL()
+// Read one data part from browse log file.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::GetDataPartFromFileL( TDes8& aDataPart )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Entering" );
+    
+    // Count data size to be read
+    TInt offset = KMaxSubmitSize;
+    if ( iStartPos + offset > iTotalsize )
+        {
+        offset = iRemainingLength ;
+        }
+
+    // Read data part from file
+    User::LeaveIfError( iLogFile.Read( iStartPos, aDataPart, offset ) );
+    
+    // Count remaining data size
+    iStartPos += offset;
+    iRemainingLength -= offset;
+
+    IRLOG_DEBUG( "CIRHttpPost::GetDataPartFromFileL - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::CIRHttpPost()
+// C++ constructor.
+//----------------------------------------------------------------------------
+//
+CIRHttpPost::CIRHttpPost( const RHTTPTransaction& aHttpTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Entering" );
+    iTransaction = aHttpTransaction;
+    IRLOG_DEBUG( "CIRHttpPost::CIRHttpPost - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::~CIRHttpPost()
+// Destructor.
+//----------------------------------------------------------------------------
+//
+CIRHttpPost::~CIRHttpPost()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Entering" );
+    iPartPostBuffer.Close();
+    iLogFile.Close();
+    if ( iSettings )
+        {
+        iSettings->Close();
+        }
+    IRLOG_DEBUG( "CIRHttpPost::~CIRHttpPost - Exit" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::CloseLogFile ()
+// Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::CloseLogFile ()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Entering" );
+	iLogFile.Close ();
+	IRLOG_DEBUG( "CIRHttpPost::CloseLogFile - Exiting" );
+    }
+
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetNextDataPart()
+// Obtains a data part from the supplier.
+//----------------------------------------------------------------------------
+//        
+TBool CIRHttpPost::GetNextDataPart( TPtrC8& aDataPart )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Entering" );
+    TBool retVal( EFalse ); // Default: several data parts
+
+    // Get data part from browse log file
+    iPartPostBuffer.Delete( 0, iPartPostBuffer.Length() );
+    TRAPD( err, GetDataPartFromFileL( iPartPostBuffer ) )
+    if ( KErrNone == err )
+        {
+        // Set data part.
+        aDataPart.Set( iPartPostBuffer );
+        if ( iRemainingLength <= 0 )
+            {
+            // Last data part.
+            retVal = ETrue;
+            iLogFile.Close();
+            }
+        }
+    else
+        {
+        // Last data part.
+        iRemainingLength = 0;
+        retVal = ETrue;
+        iLogFile.Close();
+        }
+
+
+    IRLOG_DEBUG( "CIRHttpPost::GetNextDataPart - Exiting" );
+    return retVal;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::ReleaseData()
+// Releases the current data part being held at the data supplier.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::ReleaseData()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Entering" );
+    if ( iRemainingLength > 0 )
+        {
+        TRAP_IGNORE( iTransaction.NotifyNewRequestBodyPartL() )
+        }
+    IRLOG_DEBUG( "CIRHttpPost::ReleaseData - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::OverallDataSize()
+// Obtains the overall size of the data being supplied.
+//----------------------------------------------------------------------------
+//
+TInt CIRHttpPost::OverallDataSize()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Entering" );
+    TInt retVal( KErrNotFound );
+    if ( iTotalsize > 0 )
+        {    
+		retVal = iTotalsize;
+        }
+    IRLOG_DEBUG( "CIRHttpPost::OverallDataSize - Exiting" );
+    return retVal; 
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::Reset()
+// Resets the data supplier.
+//----------------------------------------------------------------------------
+//
+TInt CIRHttpPost::Reset()
+    {
+    IRLOG_DEBUG( "CIRHttpPost::Reset - Entering" );
+    iStartPos = 0;
+    iRemainingLength = iTotalsize;
+    IRLOG_DEBUG( "CIRHttpPost::Reset - Exiting" );
+    return KErrNone;
+    }
+
+//----------------------------------------------------------------------------
+// CIRHttpPost::GetFileToPostL()
+// Gets browse log file size.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::GetFileToPostL(TInt *aFileSize)
+    {
+    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Entering" );
+
+    TFileName filePath = iSettings->PrivatePath();
+    filePath.Append( KGZipLogFileName );
+    
+    iPartPostBuffer.Close();
+    iPartPostBuffer.Create( KMaxSubmitSize );
+
+    User::LeaveIfError(
+    	iLogFile.Open( CCoeEnv::Static()->FsSession(), filePath, EFileRead ) );
+    User::LeaveIfError( iLogFile.Size( iTotalsize ) );
+    *aFileSize = iTotalsize;
+    
+    Reset();
+
+    IRLOG_DEBUG( "CIRHttpPost::GetFileToPostL - Exiting." );
+    }
+    
+//----------------------------------------------------------------------------
+// CIRHttpPost::SetTransaction()
+// Set the transaction.
+//----------------------------------------------------------------------------
+//
+void CIRHttpPost::SetTransaction( const RHTTPTransaction& aHttpTransaction )
+    {
+    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Entering." );
+    iTransaction = aHttpTransaction;
+    IRLOG_DEBUG( "CIRHttpPost::SetTransaction - Exiting." );
+    }
+
+// End of file