--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/zeroconf/client/src/cmdnsregisternotifier.cpp Thu Jun 24 19:09:47 2010 +0530
@@ -0,0 +1,155 @@
+// Copyright (c) 2008-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:
+// cmdnsregisternotifier.cpp
+//
+//
+
+/**
+@file
+@internalTechnology
+*/
+
+//System include
+#include <mdns/mdnsparamset.h>
+#include <pnp/mpnpobserver.h>
+
+//User include
+#include "cmdnsregisternotifier.h"
+#include "cmdnsclient.h"
+__FLOG_STMT(_LIT8(KComponent,"CMdnsRegisterNotifier");)
+/*
+ * Two phase constructor
+ * @param aMdns reference to RMdns client object
+ */
+CMdnsRegisterNotifier* CMdnsRegisterNotifier::NewL(RMdns& aMdns)
+ {
+ CMdnsRegisterNotifier* self = new (ELeave) CMdnsRegisterNotifier(aMdns);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self ;
+ }
+/*
+ * Destructor
+ */
+CMdnsRegisterNotifier::~CMdnsRegisterNotifier()
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier:: - Entry"));
+ //Cancel any pending asynchronous request.
+ Cancel();
+ delete iNotifyRcvdMessage;
+ iNotifyRcvdMessage = NULL;
+ __FLOG(_L8("CMdnsRegisterNotifier:: - Exit"));
+ __FLOG_CLOSE;
+ }
+
+/*
+ * Constructor
+ * @param aMdns reference to mdns object.
+ */
+CMdnsRegisterNotifier::CMdnsRegisterNotifier(RMdns& aMdns):CActive(EPriorityStandard),iMdns(aMdns),iPtrNotifyRcvdMessage(NULL,0,0)
+ {
+
+ }
+
+/*
+ * Two phase constructor
+ * Construct a buffer to recieve a new record from the network.
+ * and start listening to it.
+ */
+void CMdnsRegisterNotifier::ConstructL()
+ {
+ __FLOG_OPEN(KMDNSSubsystem, KComponent);
+ __FLOG(_L8("CMdnsRegisterNotifier::ConstructL - Entry"));
+ CActiveScheduler::Add(this);
+ iNotifyRcvdMessage = HBufC8::NewL(KMaxDNSNameLength);
+ iPtrNotifyRcvdMessage.Set(iNotifyRcvdMessage->Des());
+ Start();
+ __FLOG(_L8("CMdnsRegisterNotifier::ConstructL - Exit"));
+ }
+/*
+ * Constructs a bundle and notifies the same to the client.
+ *
+ */
+void CMdnsRegisterNotifier::RunL()
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier::RunL - Entry"));
+ if(iObserver != NULL)
+ {
+ if(iStatus.Int() == KErrNone)
+ {
+ RPnPParameterBundle pnpBundle;
+ pnpBundle.CreateL();
+ pnpBundle.Load(iPtrNotifyRcvdMessage);
+ iObserver->OnPnPEventL(pnpBundle);
+ pnpBundle.Close();
+ }
+ else
+ {
+ iObserver->OnPnPError(iStatus.Int());
+ }
+ }
+ Start();
+ __FLOG(_L8("CMdnsRegisterNotifier::RunL - Exit"));
+ }
+
+/*
+ * Clears the buffer .
+ */
+void CMdnsRegisterNotifier::DoCancel()
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier::DoCancel - Entry"));
+ TRequestStatus * status = &iStatus;
+ User::RequestComplete(status,KErrCancel);
+ delete iNotifyRcvdMessage;
+ iNotifyRcvdMessage = NULL;
+ __FLOG(_L8("CMdnsRegisterNotifier::DoCancel - Exit"));
+ }
+
+/*
+ * Returns the error to activeschedluler as the RunL is not expected to leave.
+ * @param aError error with which RunL leaves.
+ * @return aError returns the error back to activescheduler .
+ */
+TInt CMdnsRegisterNotifier::RunError(TInt aError)
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier::RunError - Entry"));
+ return aError;
+ __FLOG(_L8("CMdnsRegisterNotifier::RunError - Exit"));
+ }
+
+/*
+ * Start as Asynchoronous request and wait for this to be completed by the server .
+ * Will be called internally whenever a client requests for the notification.
+ *
+ */
+void CMdnsRegisterNotifier::Start()
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier::Start - Entry"));
+ iStatus = KRequestPending;
+ iMdns.RecieveNotifyMessageL(iPtrNotifyRcvdMessage,iStatus);
+ SetActive();
+ __FLOG(_L8("CMdnsRegisterNotifier::Start - Exit"));
+ }
+
+/*
+ * Set the observer
+ * @param aObserver a pointer to the observer sent by the client along with the bundle.
+ */
+void CMdnsRegisterNotifier::SetPnpObserver(MPnPObserver* aObserver)
+ {
+ __FLOG(_L8("CMdnsRegisterNotifier::SetPnpObserver - Entry"));
+ iObserver = aObserver;
+ __FLOG(_L8("CMdnsRegisterNotifier::SetPnpObserver - Exit"));
+ }