internetradio2.0/dataproviderinc/irhttppost.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 19 Apr 2010 14:01:53 +0300
changeset 0 09774dfdd46b
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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
*
*/


#ifndef IRHTTPPOST_H
#define IRHTTPPOST_H

#include <f32file.h>
#include <mhttpdatasupplier.h>
#include <rhttptransaction.h>

class CIRSettings;

/**
 * CIRHttpPost class for posting the data
 * Reading from the file as chunks of data
 * using MHTTPDataSupplier - Data supplier 
 */
NONSHARABLE_CLASS ( CIRHttpPost ):public CBase,	public MHTTPDataSupplier
	{
public:

	/** 
     * CIRHttpPost::NewL
     * 1st phase constructor
     */    
     static CIRHttpPost* NewL( const RHTTPTransaction& aHttpTransaction );
    		
	/** 
     * CIRHttpPost::~CIRHttpPost
     * C++ default destructor
     */
	virtual ~CIRHttpPost();

	/** 
     * CIRHttpPost::GetNextDataPart
     * Obtain a data part from the supplier. 
     * The data is guaranteed to survive until a call
     * is made to ReleaseData(). 
     */
	virtual TBool GetNextDataPart( TPtrC8& aDataPart );
	
	/** 
     * ReleaseData()
     * Release the current data part being held at the data supplier
     */
	virtual void ReleaseData();
	
	/** 
     * OverallDataSize()
     * Obtain the overall size of the data being supplied, 
     * if known to the supplier
     */	
	virtual TInt OverallDataSize();
	
	/** 
     * Reset()
     * Reset the data supplier
     * otherwise returns KErrNone
     */
	virtual TInt Reset();

	/** 
     * GetFileToPostL()
     * Prepares the data to be posted from the log file
     */
	void GetFileToPostL(TInt *aFileSize);

	/** 
     * CloseLogFile ()
     * Used to Close the log file LogUsage.gz externally from other sources (bug-fixing)
     */
	void CloseLogFile ();	
	
	/** 
     * SetTransaction().
     * Sets transaction.
     *
     * @param aHttpTransaction Reference to RHTTPTransaction.
     */
	void SetTransaction( const RHTTPTransaction& aHttpTransaction );

private:

	/** 
     * CIRHttpPost::CIRHttpPost
     * C++ default constructor
     * @param aHttpTransaction Reference to RHTTPTransaction
     */
	CIRHttpPost( const RHTTPTransaction& aHttpTransaction );
     
	/** 
     * CIRHttpPost::ConstructL
     * 2nd phase constructor
     */
    void ConstructL();

	/** 
     * CIRHttpPost::GetDataPartFromFileL
     * Obtain a data part from the browse log file.
     *
     * @param aDataPart Data from browse log to be returned.
     */
	 void GetDataPartFromFileL( TDes8& aDataPart );
    
private:

	/**
     * Browse log file.
     */	
    RFile iLogFile;

	/**
     * Total size of the post data file
     */
	TInt iTotalsize;
	
	/**
     * set the initial data sent
     */	
	TInt iStartPos;
	
	/**
     * remaining size of data to be sent
     */	
	TInt iRemainingLength;
	
     /**
     * object to HTTP Transaction 
     */
	RHTTPTransaction iTransaction;
    
    /**
     * Data part buffer.
     */
	RBuf8 iPartPostBuffer;
	
	/**
	*central repository settings handle
	*/
	CIRSettings* iSettings;
	};

#endif //IRHTTPPOST_H