Msrp/MsrpHeader/inc/CMsrpByteRangeHeader.h
branchMSRP_FrameWork
changeset 25 505ad3f0ce5c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Msrp/MsrpHeader/inc/CMsrpByteRangeHeader.h	Sat Jun 12 14:30:11 2010 +0530
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2009-2010 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:
+* MSRP Implementation
+*
+*/
+
+
+#ifndef CMSRPBYTERANGEHEADER_H
+#define CMSRPBYTERANGEHEADER_H
+
+// INTERNAL INCLUDES
+#include "CMsrpHeaderBase.h"
+
+// CONSTANTS
+
+const TInt KMaxLengthOfNumbers = 50;
+_LIT8( KByteRangeSeparator, "-" );
+_LIT8( KByteRangeTotalSeparator, "/" );
+
+// CLASS DECLARATION
+/**
+* @publishedAll
+*
+* Class provides functions for setting and getting MSRP "Byte-Range" header field
+*
+* @lib msrpclient.lib
+*/
+class CMSRPByteRangeHeader : public CMSRPHeaderBase
+	{
+	public:	// Constructors and destructor
+
+		/**
+		* Creates a new instance of CMSRMessageIdHeader
+		* @param aStart start position of the bytes in data
+		* @param aEnd end position of bytes in the data
+		* @param aTotal Total length of the data
+		* @return a new instance of CMSRPByteRangeHeader
+		*/
+		IMPORT_C static CMSRPByteRangeHeader* NewL(
+			TInt aStart, TInt aEnd, TInt aTotal );
+
+		/**
+		* Creates a new instance of CMSRPByteRangeHeader and puts it to CleanupStack
+		* @param aStart start position of the bytes in data
+		* @param aEnd end position of bytes in the data
+		* @param aTotal Total length of the data
+		* @return a new instance of CMSRPByteRangeHeader
+		*/
+		IMPORT_C static CMSRPByteRangeHeader* NewLC(
+			TInt aStart, TInt aEnd, TInt aTotal );
+
+		/**
+		* Creates a new instance of CMSRMessageIdHeader
+		* @return a new instance of CMSRPByteRangeHeader
+		*/
+		static CMSRPByteRangeHeader* NewL( );
+
+		/**
+		* Destructor, deletes the resources of CMSRPByteRangeHeader.
+		*/
+		IMPORT_C ~CMSRPByteRangeHeader();
+
+	public: // New functions
+
+		/**
+		* Constructs an instance of a CMSRPByteRangeHeader from a RReadStream
+		* @param aReadStream a stream containing the value of the
+		*        externalized object (header name not included).
+		* @return an instance of a CMSRPByteRangeHeader
+		*/
+		IMPORT_C static CMSRPByteRangeHeader*
+			InternalizeValueL( RReadStream& aReadStream );
+
+		/**
+		* Sets the start position of the bytes in data
+		* @param aStartPos start position of bytes
+		*/
+		IMPORT_C void SetStartPosition( TInt aStartPos );
+
+		/**
+		* Gets the start position of the bytes in data
+		*/
+		IMPORT_C TInt StartPosition( ) const;
+
+		/**
+		* Sets the end position of the bytes in data
+		* @param aEndPos start position of bytes
+		*/
+		IMPORT_C void SetEndPosition( TInt aEndPos );
+
+		/**
+		* Gets the end position of the bytes in data
+		*/
+		IMPORT_C TInt EndPosition( ) const;
+
+		/**
+		* Sets the total length of bytes in data
+		* @param aTotal total number of bytes
+		*/
+		IMPORT_C void SetTotalLength( TInt aTotal );
+
+		/**
+		* Gets the total number of the bytes in data
+		*/
+		IMPORT_C TInt TotalLength( ) const;
+
+	public: // From CMSRPHeaderBase
+
+		IMPORT_C void ExternalizeValueL( RWriteStream& aWriteStream ) const;
+
+	protected: // From CMSRPHeaderBase
+
+		RStringF Name() const;
+		HBufC8* ToTextValueL() const;
+
+	private: // Constructors
+
+        /**
+        * Contructor.
+        */
+		CMSRPByteRangeHeader( );
+        /**
+        * Contructor.
+		* @param aStart start position of the bytes in data
+		* @param aEnd end position of bytes in the data
+		* @param aTotal Total length of the data
+        */
+		CMSRPByteRangeHeader(
+			TInt aStart, TInt aEnd, TInt aTotal );
+        /**
+        * two-phased contructor.
+        */
+        void ConstructL( ) const;
+
+	private: // new functions
+	    /**
+		* Internalize external object data
+		* @param aReadStream a stream containing the value of the
+		*        externalized object (header name not included).
+		*/
+		void DoInternalizeValueL( RReadStream& aReadStream );
+
+  	private: // variables
+
+		// byte range values
+		TInt iStartPosition;
+		TInt iEndPosition;
+		TInt iTotalBytes;
+
+	};
+
+#endif // CMSRPBYTERANGEHEADER_H
+
+// End of File