connectivitylayer/isce/isaaccessextension_dll/inc/indicationhandler.h
changeset 0 63b37f68c1ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivitylayer/isce/isaaccessextension_dll/inc/indicationhandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+
+#ifndef INC_DINDICATIONHANDLER_H
+#define INC_DINDICATIONHANDLER_H
+
+#include <klib.h> // For DBase
+
+class DRouter;
+class SDblQue;
+
+NONSHARABLE_CLASS( DIndicationHandler ) : public DBase
+    {
+
+    public:
+
+        // Class to queue subscribed servers.
+        class TServerIdLink
+            {
+            public:
+                TUint32      iResourceId;
+                SDblQue     iIndicationQ;
+                SDblQueLink iServerLink;
+            };
+
+        class TIndicationLink
+            {
+            public:
+                TUint8      iIndication;
+                SDblQue     iSubscriberQ;
+                SDblQueLink iIndicationLink;
+            };
+
+        class TSubscriberLink
+            {
+            public:
+                TUint8      iChannelId;
+                SDblQueLink iSubscriberLink;
+            };
+
+        DIndicationHandler( DRouter& aRouter );
+
+        ~DIndicationHandler();
+
+        /*
+        * Multicast and Subscribe must be called in same DFC thread.
+        * If not then take a deep look at synchronization.
+        */
+        void Multicast( TDes8& aIndication );
+
+        /*
+        * Multicast and Subscribe must be called in same DFC thread.
+        * If not then take a deep look at synchronization.
+        */
+        TInt Subscribe( TDes8& anOrder, const TUint16 aCh, const TBool a32BitResource );
+
+    private:
+
+        void AddIndication( TServerIdLink& aServerLink, const TUint8 aIndication, const TUint16 aCh );
+
+        void AddSubscriber( TIndicationLink& aIndicationLink, const TUint16 aCh );
+
+        TServerIdLink* GetServerLink( const TUint32 aResourceId );
+
+        TIndicationLink* GetIndicationLink( TServerIdLink& aServerLink, const TUint8 aIndication );
+
+        TSubscriberLink* GetSubscriberLink( TIndicationLink& aIndicationLink, const TUint16 aCh );
+
+        void PrintSubscriptions();
+
+        void RemoveSubscription(const TUint16 aCh );
+
+        TInt SendSubscription();
+
+    private:
+
+        // owned
+        SDblQue         iServerQ;
+        // not owned
+        DRouter&        iRouter;
+
+    };
+
+#endif /* INC_DINDICATIONHANDLER_H */