--- /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