upnp/upnpstack/controlpointbase/inc/upnpcpbdevicerepository.h
changeset 0 f5a58ecadc66
child 8 92b4d337bbaf
--- /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 <e32base.h>
+
+// 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<CUpnpDevice>& aDevices);
+
+    /**
+     * Add device to unneded device list
+     *
+     * @since S60 v5.0
+     * @param aDevices Target device
+     */
+    void AddUninterestingDevicesL(RPointerArray<CUpnpDevice>& aDevices);
+
+    /**
+     * Add device to unneded device list
+     *
+     * @since S60 v5.0
+     * @param aDevices Target device
+     */
+    void AddUnneddedDevicesL(RPointerArray<CUpnpDevice>& aDevices);
+
+    /**
+     * Getter. Returns discovered device list.
+     *
+     * @since S60 v5.0
+     * @return List with discovered devices.
+     */
+    const RPointerArray<CUpnpDevice>& DiscoveredDeviceList() const;
+
+    /**
+     * Getter. Returns unnedded device list.
+     *
+     * @since S60 v5.0
+     * @return List with unnedded devices.
+     */
+    const RPointerArray<CUpnpDevice>& UnneddedDeviceList() const;
+
+    /**
+     * Getter. Returns uninteresting device list.
+     *
+     * @since S60 v5.0
+     * @return List with uninteresting devices.
+     */
+    const RPointerArray<CUpnpDevice>& UninterestingDeviceList() const;
+
+    /**
+     * Getter. Returns incomplite root device list.
+     *
+     * @since S60 v5.0
+     * @return List with incomplite root devices.
+     */
+    const RPointerArray<CUpnpDevice>& 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<CUpnpDevice> iDiscoveredDevices;
+    // List with discovered devices but not metching target types
+    // As subdevices of interesting devices needs to be discovered
+    RPointerArray<CUpnpDevice> iUninterestingDevices;
+    // List with devices that was not discovered as type
+    // is not interesting
+    RPointerArray<CUpnpDevice> iUnneededDevices;
+    // List with inclomplite root devices (some sub devices are
+    // discovered so we need to remember also root device)
+    RPointerArray<CUpnpDevice> iIncomliteRootDevices;
+    // List with inclomplite root devices (some sub devices are
+    // discovered so we need to remember also root device)
+    RPointerArray<CUpnpDevice> iIncomingDevices;
+    };
+
+
+#endif // C_CUPNPCPBDEVICEREPOSITORY_H