upnp/upnpstack/upnputils/inc/upnpssdpmessage.h
changeset 0 f5a58ecadc66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnp/upnpstack/upnputils/inc/upnpssdpmessage.h	Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,331 @@
+/** @file
+* Copyright (c) 2005-2006 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:  Declares main application class.
+*
+*/
+
+
+#ifndef C_CUPNPSSDPMESSAGE_H
+#define C_CUPNPSSDPMESSAGE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <in_sock.h>
+#include "upnphttpmessage.h"
+#include "upnphttpheader.h"
+
+// CLASS DECLARATION
+
+/**
+*  Ssdp-Message class. Used in sending and handling Ssdp messages.
+*
+*  @since Series60 2.0
+*/
+class CUpnpSsdpMessage : public CUpnpHttpMessage
+    {
+    
+    public:
+
+        /**
+        * Enumeration for message types:
+        */
+        enum TRequestType
+            {
+                // This value is used in notify-type of messages, such as 
+                // ssdp:alive.
+                ERequestNotify =1,
+                // This value is used in ssdp:byebye messages.
+                ERequestByeBye,
+                // This value is used in search messages.
+                ERequestSearch,
+                // This value is used in replies to search messages.
+                ERequestSearchResponse,
+                
+                ERequestUndefined
+                
+            };
+
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        * @param aAddr Sender's IP address.
+        * @param aRequestType Type of message to be constructed.
+        */
+        IMPORT_C static CUpnpSsdpMessage* NewL( TInetAddr& aAddr, 
+                                            TRequestType aRequestType);
+        
+        /**
+        * Two-phased constructor.
+        * @param aRequestType Type of message to be constructed.
+        */
+        IMPORT_C static CUpnpSsdpMessage* NewL( TRequestType aRequestType );
+        
+        /**
+        * Two-phased constructor.
+        * @param aBuffer Buffer which contains the message.
+        * @param aAddr Target IP address.
+        */
+        IMPORT_C static CUpnpSsdpMessage* NewL(TDesC8& aBuffer, TInetAddr& aAddr );
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CUpnpSsdpMessage();
+        
+    public: // New functions
+
+        /**
+        * Buffer to string.
+        * @since Series60 2.0
+        * @return HBufC8 pointer
+        */
+        HBufC8* ToStringL();
+
+        /**
+        * Cache control.
+        * @since Series60 2.0
+        * @return TInt
+        */
+        IMPORT_C TInt CacheControl();
+
+        /**
+        * Return UUID
+        * @since Series60 2.0
+        * @return TPtr8
+        */
+        IMPORT_C TPtr8 Uuid();
+
+        /**
+        * Return location
+        * @since Series60 2.0
+        * @return TDesC8
+        */
+        IMPORT_C TDesC8& Location();
+
+        /**
+        * Returns if SSDP notify.
+        * @since Series60 2.0
+        * @return TBool 
+        */
+        IMPORT_C TBool IsSsdpNotify();
+        
+        /**
+        * Sets the host-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aHost Value of host to be set.
+        */
+    IMPORT_C void AddHostL( TDesC8& aHost );
+        
+        /**
+        * Sets the USN-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aUsn Value of USN to be set.
+        */
+        void AddUsnL(TDesC8& aUsn);
+        
+        /**
+        * Sets the Cache-control-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aMaxAge Value of Cache-Control to be set.
+        */
+        void AddCacheControlL(TDesC8& aMaxAge);
+        
+        /**
+        * Sets the Description-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aDescriptionLocation Value of description to be set.
+        */
+        void AddLocationL(TDesC8& aDescriptionLocation);
+        
+        /**
+        * Sets the ST-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aSt Value of ST to be set.
+        */
+        void AddSearchTargetStringL(TDesC8& aSt);
+        
+        /**
+        * Sets the NT-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aNT Value of NT to be set.
+        */
+        void AddNotificationTypeL(TDesC8& aNT);
+        
+        /**
+        * Sets the Server description-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aServerType Value of server description to be set.
+        */
+        void AddServerL(TDesC8& aServerType);
+        
+        /**
+        * Sets the MX-header of Ssdp message.
+        * @since Series60 2.0
+        * @param aMx Value of MX to be set.
+        */
+    IMPORT_C void AddMxL(TDesC8& aMx);
+        
+        /**
+        * Search target.
+        * @since Series60 2.0
+        * @return TInt
+        */
+        IMPORT_C TInt SearchTarget();
+        
+        /**
+        * Returns ETrue, if message is a Alive-message, else returns EFalse.
+        * @since Series60 2.0
+        * @return ETrue, if message is a Alive-message, 
+        * else returns EFalse.
+        */
+        IMPORT_C TBool IsSsdpAlive();
+
+        /**
+        * Returns ETrue, if message is a Byebye-message, else returns EFalse.
+        * @since Series60 2.0
+        * @return ETrue, if message is a Byebye-message, 
+        * else returns EFalse.
+        */
+        IMPORT_C TBool IsSsdpByebye();
+
+        /**
+        * Returns ETrue, if message is a search message, else returns EFalse.
+        * @since Series60 2.0
+        * @return ETrue, if message is a search message, else returns EFalse.
+        */
+        IMPORT_C TBool IsSsdpMSearch();
+
+        /**
+        * Return if SSDP response.
+        * @since Series60 2.0
+        * @return ETrue, if message is a response to search message, 
+        * else returns EFalse.
+        */
+        IMPORT_C TBool IsSsdpResponse();
+        
+        /**
+        * Return if search all.
+        * @since Series60 2.0
+        * @return ETrue, if message is a search message and 
+        * search is for all devices, else returns EFalse.
+        */
+        IMPORT_C TBool IsSearchAll();
+
+        /**
+        * Return if search device.
+        * @since Series60 2.0
+        * @return ETrue, if message is a search message and 
+        * search is for certain devices, else returns EFalse.
+        */
+        IMPORT_C TBool IsSearchDevice();
+
+        /**
+        * Return if search service.
+        * @since Series60 2.0
+        * @return ETrue, if message is a search message and 
+        * search is for certain services, else returns EFalse.
+        */
+        IMPORT_C TBool IsSearchService();
+        
+        /**
+        * Returns NT-header of Ssdp message.
+        * @since Series60 2.0
+        * @return NT-header of Ssdp message.
+        */
+        IMPORT_C TDesC8& Nt();
+        
+        /**
+        * Returns USN-header of Ssdp message.
+        * @since Series60 2.0
+        * @return USN-header of Ssdp message.
+        */
+        IMPORT_C TDesC8& Usn();
+        
+        /**
+        * Returns ST-header of Ssdp message.
+        * @since Series60 2.0
+        * @return ST-header of Ssdp message.
+        */
+        IMPORT_C TDesC8& St();
+
+        /**
+        * Returns NTS-header of Ssdp message.
+        * @since Series60 2.0
+        * @return NTS-header of Ssdp message.
+        */
+        IMPORT_C TDesC8& Nts();
+        
+        /**
+        * Enumeration for search message types:
+        * @since Series60 2.0
+        */
+        enum TSearchTarget 
+            {
+            
+                // This message is not a search message.
+                ESsdpNone = 1, 
+                // This is a search all message.
+                ESsdpAll,
+                // This is a root device search.
+                EUPnPRootDevice,
+                // This is a search by specific uuid.
+                EDeviceUid,
+                // This is a search by specific device type.
+                EDeviceType,
+                // This is a search by specific service type.
+                EServiceType
+
+            };
+        
+    protected: // from CUpnpHttpMessage
+		/**
+		Append ContentLength when headers are dumped to string (using public method HeadersToStringL)
+		@param aHeaders without "Content-Length"
+		**/	
+		IMPORT_C virtual void AppendContentLengthToHeadersL(HBufC8*& aHeaders);
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CUpnpSsdpMessage();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        * @param aRequestType Type of message to be constructed.
+        */
+        void ConstructL( TRequestType aRequestType );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        * @param aAddr Remote IP address
+        */
+		void HttpConstructL( TInetAddr& aAddr );
+
+    private:
+
+        /**
+        * Parse buffer.
+        * @since Series60 2.0
+        * @param aBuffer buffer to be parsed.
+        */
+        void ParseL(TDesC8& aBuffer);
+    
+    };
+
+#endif // C_CUPNPSSDPMESSAGE_H
+
+// End of File
\ No newline at end of file