diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/upnputils/inc/upnpssdpmessage.h --- /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 +#include +#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