diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/controlpointbase/inc/upnpcpbdevicerepository.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/controlpointbase/inc/upnpcpbdevicerepository.h Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,263 @@ +/** @file +* Copyright (c) 2007-2007 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 storage for devices known by control point. +* +*/ + + +#ifndef C_CUPNPCPBDEVICEREPOSITORY_H +#define C_CUPNPCPBDEVICEREPOSITORY_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CUpnpDevice; + +/** + * Storage for devices known by control point + * + * @lib controlpointbase.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CUpnpCpbDeviceRepository ) : public CBase + { + public: + /** + * Two-phased constructor + * @since S60 v5.0 + */ + static CUpnpCpbDeviceRepository* CUpnpCpbDeviceRepository::NewL( + const CDesC8Array& aTargetDeviceTypes ); + + /** + * Destructor + * @since S60 v5.0 + */ + ~CUpnpCpbDeviceRepository(); + + /** + * Check if device type is interesting for control point + * + * @since S60 v5.0 + * @param aDevice Device type that should be match + * @return ETrue if type is correct one, EFalse if not + */ + TBool MatchTargetDevice(const TDesC8& aDeviceType); + + /** + * Check if device is in repository + * + * @since S60 v5.0 + * @param aDevice Device uuid that should be match + * @return ETrue if device is know, EFalse if not + */ + TBool IsKnownDevice(const TDesC8& aDeviceUuid); + + /** + * Check if device is discovered already + * + * @since S60 v5.0 + * @param aDevice Device uuid that should be match + * @return ETrue if device is know, EFalse if not + */ + TBool IsDiscoveredDevice(const TDesC8& aDeviceUuid); + + /** + * Check if device is discovered but type is not matching + * needed devices types + * + * @since S60 v5.0 + * @param aDevice Device uuid that should be match + * @return ETrue if device is know, EFalse if not + */ + TBool IsUninterestingDevice(const TDesC8& aDeviceUuid); + + /** + * Check if device is unneded (type is different then needed). + * + * @since S60 v5.0 + * @param aDevice Device uuid that should be match + * @return ETrue if device is know, FALSE if not + */ + TBool IsUnneededDevice(const TDesC8& aDeviceUuid); + + /** + * Add device to discovered device list + * + * @since S60 v5.0 + * @param aDevice Target device + * @return ETrue if device was added + */ + TBool AddDiscoveredDeviceL(CUpnpDevice* aDevice); + + /** + * Add device to unneded device list + * + * @since S60 v5.0 + * @param aDevice Target device + * @return ETrue if device was added + */ + TBool AddUnneddedDeviceL(CUpnpDevice* aDevice); + + /** + * Add device to incomlite root device list + * + * @since S60 v5.0 + * @param aDevice Target device + * @return ETrue if device was added + */ + TBool AddIncompliteDeviceL(CUpnpDevice* aDevice); + + /** + * Add device to discovered device list + * + * @since S60 v5.0 + * @param aDevices Target device + */ + void AddDiscoveredDevicesL(RPointerArray& aDevices); + + /** + * Add device to unneded device list + * + * @since S60 v5.0 + * @param aDevices Target device + */ + void AddUninterestingDevicesL(RPointerArray& aDevices); + + /** + * Add device to unneded device list + * + * @since S60 v5.0 + * @param aDevices Target device + */ + void AddUnneddedDevicesL(RPointerArray& aDevices); + + /** + * Getter. Returns discovered device list. + * + * @since S60 v5.0 + * @return List with discovered devices. + */ + const RPointerArray& DiscoveredDeviceList() const; + + /** + * Getter. Returns unnedded device list. + * + * @since S60 v5.0 + * @return List with unnedded devices. + */ + const RPointerArray& UnneddedDeviceList() const; + + /** + * Getter. Returns uninteresting device list. + * + * @since S60 v5.0 + * @return List with uninteresting devices. + */ + const RPointerArray& UninterestingDeviceList() const; + + /** + * Getter. Returns incomplite root device list. + * + * @since S60 v5.0 + * @return List with incomplite root devices. + */ + const RPointerArray& IncompliteDeviceList() const; + + /** + * Getter. Find device in repository. + * + * @since S60 v5.0 + * @return Device pointer if found. + */ + CUpnpDevice* FindDevice( const TDesC8& aDeviceUuid ); + + /** + * Getter. Find incomplite device in repository. + * + * @since S60 v5.0 + * @return Device pointer if found. + */ + CUpnpDevice* FindIncompliteDevice(const TDesC8& aDeviceUuid); + + /** + * Remove device from all list + * + * @since S60 v5.0 + * @param aDevice Target device + */ + void RemoveDevice( CUpnpDevice* aDevice ); + + /** + * Add device incoming from SSDP layer + * final device built from device description is synchronized with that + * + * @since S60 v5.0 + * @param aDevice Target device + */ + TBool AddIncomingDeviceL( CUpnpDevice* aDevice ); + + /** + * Remove device from incoming list + * + * @since S60 v5.0 + * @param aDevice Target device + */ + CUpnpDevice* RemoveIncomingDevice( const TDesC8& aUuid ); + + /** + * Finds root of given device among dicovered and being discovered devices + * @since Series60 3.2 + * @param aDeviceUuid UUID of device + * @return Device if found or NULL + */ + CUpnpDevice* FindRoot( const TDesC8& aDeviceUuid ); + + +private: + /** + * Constructor + * @since S60 v5.0 + */ + CUpnpCpbDeviceRepository(); + + /** + * Second phase constructor + * @since S60 v5.0 + */ + void ConstructL(const CDesC8Array& aTargetDeviceTypes); + +private: + + // Target device types + CDesC8ArrayFlat* iTargetDeviceTypes; + // List with discovered devices (only device that match target types) + RPointerArray iDiscoveredDevices; + // List with discovered devices but not metching target types + // As subdevices of interesting devices needs to be discovered + RPointerArray iUninterestingDevices; + // List with devices that was not discovered as type + // is not interesting + RPointerArray iUnneededDevices; + // List with inclomplite root devices (some sub devices are + // discovered so we need to remember also root device) + RPointerArray iIncomliteRootDevices; + // List with inclomplite root devices (some sub devices are + // discovered so we need to remember also root device) + RPointerArray iIncomingDevices; + }; + + +#endif // C_CUPNPCPBDEVICEREPOSITORY_H