--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/zeroconf/client/src/cmdnspnpservicepublisher.cpp Thu Jun 24 19:09:47 2010 +0530
@@ -0,0 +1,156 @@
+// 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:
+// cmdnspnpservicepublisherimpl.cpp
+//
+//
+
+//User include
+#include "cmdnspnpservicepublisherimpl.h"
+__FLOG_STMT(_LIT8(KComponent,"CMDnsServicePublisherImpl");)
+/*
+ *Default constructor
+ */
+CMDnsServicePublisherImpl::CMDnsServicePublisherImpl ()
+ {
+ __FLOG_OPEN(KMDNSSubsystem, KComponent);
+ }
+
+/*
+ * Two phase constructor
+ */
+CMDnsServicePublisherImpl* CMDnsServicePublisherImpl::NewL()
+ {
+
+ return new ( ELeave ) CMDnsServicePublisherImpl;
+
+ }
+
+/*
+ * Destructor
+ */
+CMDnsServicePublisherImpl::~CMDnsServicePublisherImpl ()
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::~CMDnsServicePublisherImpl - Entry"));
+ iMdns.Close();
+ __FLOG(_L8("CMDnsServicePublisherImpl::~CMDnsServicePublisherImpl - Exit"));
+ __FLOG_CLOSE;
+ }
+
+/*
+ * virtual function in the base class CPnPServicePublisherBase
+ * Will be called to construct the object.
+ * Launches the Mdns server if not already and creates a new session.
+ * Graps the Iap and sends the same to server to use .
+ *
+ */
+TInt CMDnsServicePublisherImpl::Construct(TUint /*aTierId*/)
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::Construct - Entry"));
+ RSocketServ sockServ;
+ RConnection connection;
+ TInt error = sockServ.Connect();
+ error = connection.Open(sockServ);
+
+ // start a connection, and grab the IAP ID
+ error = connection.Start();
+
+ TUint32 iap ;
+ _LIT(KCommdbIapSetting, "IAP\\Id");
+ connection.GetIntSetting(KCommdbIapSetting, iap);
+ iMdns.Open(iap);
+ connection.Close();
+ sockServ.Close();
+ __FLOG(_L8("CMDnsServicePublisherImpl::Construct - Exit"));
+ return error;
+ }
+
+/*
+ * Publishes the service client sent along with bundle.
+ * any error will be notified back using the Observer inside the bundle.
+ */
+void CMDnsServicePublisherImpl::Publish ( const RPnPParameterBundle& aServiceInfo )
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::Publish - Entry"));
+ TRAPD(err, PublishL( aServiceInfo ));
+ if(err != KErrNone )
+ aServiceInfo.PnPObserver()->OnPnPError(err);
+ __FLOG(_L8("CMDnsServicePublisherImpl::Publish - Exit"));
+ }
+
+/*
+ *Leaving function which publish any services client want to .
+ *Might contain the additional text record . If client wish to publish.
+ *@param aServiceInfo RPnpParameterBundle contains the domainName need to be published.
+ */
+void CMDnsServicePublisherImpl::PublishL (const RPnPParameterBundle& aServiceInfo )
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::PublishL - Entry"));
+ TBool isUpdate = EFalse;
+ HBufC8* data = HBufC8::NewLC(aServiceInfo.Length());
+ TPtr8 buffer = data->Des();
+ aServiceInfo.Store(buffer);
+ RPnPParameterBundle serviceInfo;
+ serviceInfo.CreateL();
+ serviceInfo.Load(buffer);
+ RParameterFamily publishFamily = serviceInfo.FindFamily( EMdnsPublishParamset) ;
+ if(!publishFamily.IsNull() && publishFamily.CountParameterSets()>0)
+ {
+ CMDnsPublishParamSet* publishParamSet = static_cast<CMDnsPublishParamSet*> (publishFamily.GetParameterSetAtIndex ( 0, RParameterFamily::ERequested ));
+ isUpdate = publishParamSet->PublishUpdate();
+ }
+ iMdns.RegisterServiceL(aServiceInfo,isUpdate);
+ serviceInfo.Close();
+ CleanupStack::PopAndDestroy();//data
+ __FLOG(_L8("CMDnsServicePublisherImpl::PublishL - Exit"));
+ }
+
+/*
+ * Used to request for any notification of the service type client is interested in .
+ * @param aServiceInfo a RPnPParameterBundle which contains the servicetype ,
+ * client is interested in .
+ */
+void CMDnsServicePublisherImpl::SendNotify ( const RPnPParameterBundle& aServiceInfo )
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::SendNotify - Entry"));
+ TRAPD( err, SendNotifyL( aServiceInfo ));
+ if ( err != KErrNone )
+ aServiceInfo.PnPObserver()->OnPnPError(err);
+ __FLOG(_L8("CMDnsServicePublisherImpl::SendNotify - Exit"));
+ }
+
+/*
+ *@param aServiceInfo a RPnPParameterBundle which contains the servicetype ,
+ *client is interested in .
+ */
+void CMDnsServicePublisherImpl::SendNotifyL ( const RPnPParameterBundle& aServiceInfo )
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::SendNotifyL - Entry"));
+ iMdns.RegisterServiceL(aServiceInfo);
+ __FLOG(_L8("CMDnsServicePublisherImpl::SendNotifyL - Exit"));
+ }
+
+/*
+ * Nothing to do with this .
+ * Might need it in future.
+ */
+CControlChannelBase* CMDnsServicePublisherImpl::InitiateControlL ()
+ {
+ __FLOG(_L8("CMDnsServicePublisherImpl::InitiateControlL - Entry"));
+ //Nothing to do .
+ //Not Implemented
+ __FLOG(_L8("CMDnsServicePublisherImpl::InitiateControlL - Exit"));
+ return NULL;
+ }
+
+