diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/T_WspProtHnd/CWspFileDataSupplier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/T_WspProtHnd/CWspFileDataSupplier.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,121 @@ +// Copyright (c) 2002-2009 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: +// + +#ifndef __CWSPFILEDATASUPPLIER_H__ +#define __CWSPFILEDATASUPPLIER_H__ + +// System includes +#include +#include + + +/** Definition of class 'CWspFileDataSupplier'. +*/ +class CWspFileDataSupplier : public CBase, public MHTTPDataSupplier + { +public: // methods + + /** Factory construction: create an uninitialised data supplier + */ + static CWspFileDataSupplier* NewL(); + + /** Factory construction: create a data supplier, to read from the specified file + */ + static CWspFileDataSupplier* NewL(const TDesC& aFileName); + + /** Destructor + */ + virtual ~CWspFileDataSupplier(); + + /** Clean-up support required by the client's item store + */ + static void CleanUp(TAny* aDataSupplierItem); + + /** Open the specified file. Must be called straight after construction. If a + previous file was open, it is closed first. + */ + void SetFileL(const TDesC& aFileName); + + /** Get the next data part. The supplied buffer is set to point at the data. The returned flag indicates ETrue if no more + data is to come, ie. aDataPart is the final buffer. + */ + virtual TBool GetNextDataPart(TPtrC8& aDataPart); + + /** Release the current data part being held at the data + supplier. This call indicates to the supplier that the part + is no longer needed, and another one can be supplied, if + appropriate. + */ + virtual void ReleaseData(); + + /** Obtain the overall size of the data being supplied, if known + to the supplier. Where a body of data is supplied in several + parts this size will be the sum of all the part sizes. If + the size is not known, KErrNotFound is returned; in this case + the client must use the return code of GetNextDataPart to find + out when the data is complete. + + @return A size in bytes, or KErrNotFound if the size is not known. */ + virtual TInt OverallDataSize(); + + /** Reset the data supplier. This indicates to the data supplier that it should + return to the first part of the data. This could be used in a situation where + the data consumer has encountered an error and needs the data to be supplied + afresh. Even if the last part has been supplied (i.e. GetNextDataPart has + returned ETrue), the data supplier should reset to the first part. + + If the supplier cannot reset it should return an error code; otherwise it should + return KErrNone, where the reset will be assumed to have succeeded*/ + virtual TInt Reset(); + +private: + + /** Normal constructor + */ + CWspFileDataSupplier(); + + /** Second phase construction, default. + */ + void ConstructL(); + + /** Second phase construction, opens the named file + */ + void ConstructL(const TDesC& aFileName); + +private: + + /** A buffer used to hold the data specified in the script, which is copied to the invoker of this API + */ + HBufC8* iBuffer; + + /** Handle to the file server + */ + RFs iFileSrvHnd; + + /** Parsed version of the filename to be read + */ + TParse iParsedFileName; + + /** Handle to the file being supplied by this data supplier + */ + RFile iFileHnd; + + /** Flag that indicates whether a file is currently open + */ + TBool iFileOpen; + }; + + +#endif // __CWSPFILEDATASUPPLIER_H__