diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/upnputils/inc/upnpdevicelibraryelement.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/upnputils/inc/upnpdevicelibraryelement.h Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,332 @@ +/** @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_CUPNPDEVICELIBRARYELEMENT_H +#define C_CUPNPDEVICELIBRARYELEMENT_H + +// INCLUDES +#include +#include +#include +#include "upnptimeoutelement.h" +#include "upnpcommonstructs.h" + +// FORWARD DECLARATIONS +class CUpnpSsdpMessage; + +// CLASS DECLARATION + +/** +* This class has two main functionalities: +* 1. Timeout from CUpnpTimeoutElement +* 2. Buffers to store the data about a UPnP device +* +* @since Series60 2.0 +*/ +class CUpnpDeviceLibraryElement : public CUpnpTimeoutElement + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aParent The parent of the element (e.g. device library) + * to handle timeout callbacks + * @return A new CUpnpDeviceLibraryElement instance + */ + IMPORT_C static CUpnpDeviceLibraryElement* NewL( + MUpnpTimeoutElementParent& aParent); + + /** + * Destructor. + */ + IMPORT_C virtual ~CUpnpDeviceLibraryElement(); + + public: // New functions + + /** + * Add data of a SSDP message to the device library + * @since Series60 2.0 + * @param aMessage A SSDP message + * @param aUpdateId Reference to current update id. If required \ + the value of this update id is changed when device is added to \ + device library. + * @return ETrue if device changed + */ + IMPORT_C TBool AddInfoL( CUpnpSsdpMessage* aMessage, TInt& aUpdateId ); + + /** + * Add data got from local device to the device library. + * @since Series60 2.0 + * @param aIndex A indexing structure for the data buffer + * @param aBuffer A buffer containing the actual data + * @param aAddr Address of the device that is to be added. + */ + IMPORT_C void AddInfoL( const TUpnpAddLocalDevice* aIndex, + const TDesC8& aBuffer, + const TInetAddr& aAddr ); + + /** + * Add data got from local device to the device library. + * @since Series60 2.0 + * @param aIndex A indexing structure for the data buffer + * @param aBuffer A buffer containing the actual data + */ + IMPORT_C void AddInfoL( const TUpnpAddLocalDevice* aIndex, + const TDesC8& aBuffer); + + public: + + /** + * Sets iAdvertised to ETrue. + * @since Series60 3.2 + */ + void Advertising(); + + /** + * Sets iAdvertised to EFalse. + * @since S60 5.1 + */ + void AdvertisingFinished(); + + /** + * Is advertised. + * @since Series60 3.2 + * @return TBool + */ + TBool Advertised(); + + /** + * Set root device. + * @since Series60 2.0 + * @param aRootDevice root device + */ + void SetRootDevice( TBool aRootDevice ); + + /** + * Return local. + * @since Series60 2.0 + * @return TBool + */ + IMPORT_C TBool Local() const; + + /** + * Set local. + * @since Series60 2.0 + * @param aLocal if local or not + */ + void SetLocal( TBool aLocal ); + + /** + * Is alive. + * @since Series60 2.0 + * @return TBool + */ + IMPORT_C TBool Alive() const; + + /** + * SetAlive. + * @since Series60 2.0 + */ + IMPORT_C void SetAlive(TBool aAlive); + + /** + * Should be filtered. + * @since Series60 3.2 + * @return TBool + */ + TBool Filter() const; + + /** + * SetFilter. + * @since Series60 2.0 + */ + void SetFilter(TBool aFilter); + + /** + * Idicate if device cache-control time expired. + * @since Series60 3.2 + * @return ETrue if expired, otherwise EFalse + */ + TBool Expired() const; + + /** + * Setter. + * @since Series60 3.2 + */ + void SetExpired( TBool aExpired ); + + /** + * Set update id. + * @since Series60 2.0 + * @param aUpdateId update ID + */ + IMPORT_C void SetUpdateId( TInt aUpdateId ); + + /** + * Return update ID. + * @since Series60 2.0 + * @return TInt update ID + */ + IMPORT_C TInt UpdateId() const; + + /** + * ?member_description. + * @since Series60 2.0 + * @return ?description + */ + IMPORT_C TUpnpDevice* AsTDeviceL() const; + + /** + * Returns true, if the element describes a root device. + * @since Series60 2.0 + * @return ETrue, if root device; EFalse otherwise + */ + IMPORT_C TBool IsRootDevice() const; + + /** + * Returns the UUID of this element. + * @since Series60 2.0 + * @return Descriptor containing the UUID. + */ + IMPORT_C TDesC8& UUID(); + + /** + * Returns the description URL of this element. + * @since Series60 2.0 + * @return Descriptor containing the description URL. + */ + IMPORT_C TDesC8& DescriptionUrl(); + + /** + * Returns the domain of this element. + * @since Series60 2.0 + * @return Descriptor containing the domain. + */ + IMPORT_C TDesC8& Domain(); + + /** + * Returns the device type of this element. + * @since Series60 2.0 + * @return Descriptor containing the device type. + */ + IMPORT_C TDesC8& DeviceType(); + + /** + * Returns an array containing the service types of the services + * of this element. + * @since Series60 2.0 + * @return Descriptor array containing the service types. + */ + IMPORT_C CDesC8Array& ServiceList(); + + private: + + /** + * C++ default constructor. + * @param aParent The parent of the element (e.g. device library) + * to handle timeout callbacks + */ + CUpnpDeviceLibraryElement( MUpnpTimeoutElementParent& aParent ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: + + /** + * Sets the UUID of a device to aUUID. + * @since Series60 2.0 + * @param aUUID UUID value that is to be set for this element. + */ + void SetUuidL( const TDesC8& aUUID ); + + /** + * Sets the url to this device's description file. + * @since Series60 2.0 + * @param aDescriptionURL New value of description url. + */ + void SetDescriptionUrlL( const TDesC8& aDescriptionURL ); + + /** + * Sets the url to this device's description file. + * @param aDescriptionURL New value of description url. + * @param aAddr Address of the device. + * @param aPort Port of the device. + */ + void SetDescriptionUrlL( const TDesC8& aDescriptionURL, + const TInetAddr& aAddr, + const TDesC8& aPort ); + + /** + * Sets the domain value for this element. + * @since Series60 2.0 + * @param aDomain New value for Domain. + */ + void SetDomainL( const TDesC8& aDomain ); + + /** + * Sets the device's type (for example MediaServer:1). + * @since Series60 2.0 + * @param aDeviceType New value for device type. + */ + void SetDeviceTypeL( const TDesC8& aDeviceType ); + + /** + * Adds a service to this element. Service type is aServiceType + * (ConnectionManager:1 for example). + * @since Series60 2.0 + * @param aServiceType Name of service that is to be added. + */ + void AddServiceTypeL( const TDesC8& aServiceType ); + + /** + * Add data (only from Notification Type Header) of a SSDP message to the device library + * @param aMessage A SSDP message + * @return ETrue if device changed + */ + TBool AddInfoFromNotificationTypeHeaderL( CUpnpSsdpMessage* aMessage); + + /** + * Check if a aDescriptor has prefix aPrefix + * @param aDescriptor + * @param aPrefix + * @return TBool + */ + static TBool HasPrefix( const TDesC8& aDescriptor, const TDesC8& aPrefix ); + + protected: + TInt iUpdateId; + private: + TBool iAlive; + TBool iFilter; + TBool iLocal; + TBool iExpired; + TBool iRootDevice; + HBufC8* iUUID; + HBufC8* iDeviceType; + HBufC8* iDomain; + HBufC8* iDescriptionURL; + CDesC8ArrayFlat* iServiceList; + TBool iAdvertised; + }; + +#endif // C_CUPNPDEVICELIBRARYELEMENT_H + +// End of File \ No newline at end of file