epoc32/include/obexheader.h
branchSymbian2
changeset 2 2fe1408b6811
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/obexheader.h	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,248 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// $Workfile: obexHeader.h $
+// $Author: Stevep $
+// $Revision: 13 $
+// $Date: 25/03/02 10:57 $
+// 
+//
+
+#if !defined (__OBEXHEADER_H__)
+#define __OBEXHEADER_H__
+
+
+#include <e32std.h> 
+#include <e32base.h>    //CBase 
+
+class CMsvStore;
+class RMsvReadStream;
+class RMsvWriteStream;
+
+// Stream version -- increment by one each time the externalized data format changes
+// for a significant release.
+const TInt32 KObexMessageStreamVersion = 1;///<Stream version
+const TInt KObexBadStreamVersion = 1;
+
+
+class CObexMtmHeader : public CBase
+/**
+Base class for OBEX object headers. Allows them to be stored and restored to and from the
+CMsvStore.
+ 
+@internalTechnology
+@released
+*/
+	{
+public:
+
+	/**
+	* Destructor which deletes all of the HBufC members
+	*/
+
+    IMPORT_C ~CObexMtmHeader();
+
+	/**
+	 * Creates a stream in aStore and externalises this object to it.
+	 *
+	 *
+	 * @param aStore The store to which this object is to be stored. Note this must be open with write access or 
+	 *  this function will leave.
+	 * @leave KErrXXX Standard EPOC stream leave codes.
+	 * @leave KErrAccessDenied aStore is not opened with write access.
+	 */
+    
+	IMPORT_C void StoreL(CMsvStore& aStore) const;
+    
+	/**
+	 * Opens a stream in aStore and internalises this object from it.
+	 * @param aStore The store from which this object is to be restored. Note this must be open with read or 
+	 *  read/write access or this function will leave.
+	 * @leave KErrXXX Standard EPOC stream leave codes. 
+	 * @leave KErrAccessDenied aStore is not opened with read access.
+	 */
+
+	IMPORT_C void RestoreL(const CMsvStore& aStore);
+
+	//Setters/Getters
+    
+	/**
+	 * Returns the Name header value.
+	 * @return The Name header value. This will be a zero-length descriptor if this Name has not been set.
+	 */
+	
+	IMPORT_C TPtrC Name() const;
+
+	/**
+	 * Sets the Name header value.
+	 * @param aName The new Name header value
+	 * @leave KErrXXX Standard EPOC error codes if allocation of a buffer to hold the Name header fails.
+	 */
+
+    IMPORT_C void SetNameL(const TDesC& aSubject);
+
+	/**
+	 * Returns the Subject header value.
+	 * @return The Subject header value. This will be a zero-length descriptor if this Subject has not been set.
+	 */
+
+    IMPORT_C TPtrC Subject() const;
+    
+	/**
+	 * Sets the Subject header value.
+	 *
+	 * @param aName The new Subject header value
+	 * @leave KErrXXX Standard EPOC error codes if allocation of a buffer to hold the Subject header fails.
+	 */
+
+	IMPORT_C void SetSubjectL(const TDesC& aSubject);
+
+    /**
+	 * Returns the Type header value.
+	 * @return The Type header value. This will be a zero-length descriptor if this Type has not been set.
+	 */
+	
+	IMPORT_C TPtrC8 Type() const;
+    
+	/**
+	 * Sets the Type header value.
+	 *
+	 * @param aType The new Type header value
+	 * @leave KErrXXX Standard EPOC error codes if allocation of a buffer to hold the Type header fails.
+	 */
+
+	IMPORT_C void SetTypeL(const TDesC8& aSubject);
+
+    /**
+	 * Returns the Target header value.
+	 * @return The Target header value. This will be a zero-length descriptor if this Target has not been set.
+	 */
+
+	IMPORT_C TPtrC8 Target() const;
+    
+	/**
+	 * Sets the ConnectionID header value.
+	 * 
+	 * @param ConnectionID The new Target header value
+	 * @leave KErrXXX Standard EPOC error codes if allocation of a buffer to hold the Target header fails.
+	 */
+	
+	IMPORT_C void SetTargetL(const TDesC8& aSubject);
+
+    /**
+	 * Returns the ConnectionID header value.
+	 * @return The ConnectionID header value. This will be a zero-length descriptor if this ConnectionID has not been set.
+	 */
+	
+	IMPORT_C TPtrC8 ConnectionID() const;
+    
+	/**
+	 * Sets the ConnectionID header value.
+	 * 
+	 * @param ConnectionID The new ConnectionID header value
+	 * @leave KErrXXX Standard EPOC error codes if allocation of a buffer to hold the ConnectionID header fails.
+	 */
+	
+	IMPORT_C void SetConnectionIDL(const TDesC8& aSubject);
+
+	/**
+	 * Returns the Length header value
+	 * @return Length header value
+	 */
+	
+	IMPORT_C TInt Length() const;
+	
+	/**
+	 * Sets the Length header value
+	 * @param aLength The new Length header value
+	 */
+
+	IMPORT_C void SetLength(TInt aLength);
+
+	/**
+	 * Returns the Time header value
+	 * @return Time header value
+	 */
+
+	IMPORT_C const TTime& Time() const;
+	
+	/**
+	 * Sets the Time header value
+	 * @param aTime The new Time header value
+	 */
+
+	IMPORT_C void SetTime(const TTime& aTime);
+
+	///Transport specific address getter, therefore implemented in the derived classes
+    IMPORT_C virtual TPtrC8 Addr() const = 0;
+	///Transport specific address setter, therefore implemented in the derived classes
+    IMPORT_C virtual void SetAddrL(const TDesC8& aSubject) = 0;
+
+	///Called by Store/Restore -- must be implemented in the derived class and call BaseInternaliseL first
+    IMPORT_C virtual void InternalizeL(RMsvReadStream& aReadStream) = 0;
+	///Called by Store/Restore -- must be implemented in the derived class and call BaseExternaliseL first
+    IMPORT_C virtual void ExternalizeL(RMsvWriteStream& aWriteStream) const = 0;
+
+protected:
+	//Base class functions that MUST be called by the derived classes
+    
+	/**
+	 * Internalizes the CObexMtmHeader object from a stream.Must be called by the derived class BEFORE 
+	 * that class internalizes
+	 *
+	 * @param aReadStream The stream to be read from
+	 * @leave KErrXXX Standard EPOC stream leave codes
+	 */
+	
+	IMPORT_C void BaseInternalizeL(RMsvReadStream& aReadStream);
+
+	/**
+	 * Externalizes CObexMtmHeader object to a stream. Must be called by the derived class BEFORE 
+	 * that class externalizes
+	 * @param aWriteStream The stream to be written to
+	 * @leave KErrXXX Standard EPOC stream leave codes
+	 */
+
+    IMPORT_C void BaseExternalizeL(RMsvWriteStream& aWriteStream) const;
+	
+	/**
+	 * Leaving constructor, which must be called by the base classes to initialise the HBufC members
+	 */
+	
+	IMPORT_C void BaseConstructL();
+
+protected:
+	
+	/**
+	 * Default constructor, which assigns the TUid for the stream and stream version
+	 *
+	 * @param aStreamUid Uid of the header stream--specified in the derived class
+	 * @param aStreamVersion Version number for the stream, must be specified in the derived classes 
+	 * and incremented each time a new version of the stream is implemented.
+	 */
+
+	IMPORT_C CObexMtmHeader(TUid aStreamUid, TInt32 aStreamVersion);
+
+protected:
+	HBufC*			iName; ///< The name of the Obex object
+	HBufC*			iSubject; ///< The subject of the Obex object
+	HBufC8*			iType; ///< The type of the Obex object
+	TInt			iLength; ///< The size of the Obex object
+	TTime			iTime; ///< Date and time of last modification of Obex object
+	HBufC8*			iTarget; ///< Byte sequence identifying intended target
+	HBufC8*			iConnectionID; ///< The transport type
+
+	const TUid		iStreamUid; ///< Uid of the header stream
+	const TInt32	iStreamVersion; ///< Version number for the streams
+	};
+#endif	//!defined (__OBEXHEADER_H__)