tcpiputils/dnd/inc/llmnrnotifyhandler.h
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tcpiputils/dnd/inc/llmnrnotifyhandler.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,70 @@
+// Copyright (c) 2004-2009 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:
+// llmnrnotifyhandler.h - Link-local multicast name resolution 
+// notify handler module header
+//
+
+#ifndef _LLMNRNOTIFYHANDLER_H_
+#define _LLMNRNOTIFYHANDLER_H_
+
+/**
+@file llmnrnotifyhandler.h
+LLMNR interface monitoring
+@internalComponent	Domain Name Resolver
+*/
+#include "timeout.h"
+
+class CDndLlmnrResponder;
+class CDndLlmnrNotifyHandler : public CBase
+	/**
+	* Handles notifications of interface changes for the LLMNR
+	*/
+    {
+public:
+    CDndLlmnrNotifyHandler(CDndLlmnrResponder &aMaster);
+    ~CDndLlmnrNotifyHandler();
+    void ConstructL();
+    void ConfigurationChanged();
+    void Timeout(const TTime &aNow);
+	RTimeout iTimeout;			//< Hook to the timer service (MTimeoutManager)
+private:
+    void ScanInterfaces();
+	TInt IsLlmnrDisabledL(TUint32 aIap);
+    CDndLlmnrResponder &iMaster;
+    };
+
+// This ungainly manoevure is forced on us because the offset is not evaluated early enough by GCC3.4 to be
+// passed as a template parameter
+#if defined(__X86GCC__) || defined(__GCCE__)
+#define KDndLlmnrNotifyHandlerTimeoutOffset 4
+__ASSERT_COMPILE(KDndLlmnrNotifyHandlerTimeoutOffset == _FOFF(CDndLlmnrNotifyHandler, iTimeout));
+#else
+#define KDndLlmnrNotifyHandlerTimeoutOffset _FOFF(CDndLlmnrNotifyHandler, iTimeout)
+#endif
+
+//
+//	CLlmnrNotifyHandlerTimeoutLinkage
+//	**************************
+//	Glue to bind timeout callback from the timeout manager into Timeout() call
+//	on the CDndLlmnrNotifyHandler
+//  Copied from CDndResolverTimeoutLinkage
+class CLlmnrNotifyHandlerTimeoutLinkage : public TimeoutLinkage<CDndLlmnrNotifyHandler, KDndLlmnrNotifyHandlerTimeoutOffset>
+	{
+public:
+	static void Timeout(RTimeout &aLink, const TTime &aNow, TAny * /*aPtr*/)
+		{
+		Object(aLink)->Timeout(aNow);
+		}
+	};
+#endif