--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/zeroconf/client/inc/cmdnsclient.h Thu Jun 24 19:09:47 2010 +0530
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2008 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:
+*
+*/
+
+
+/**
+@file
+@PublishedAll
+*/
+
+#ifndef __MDNSCLIENT_H__
+#define __MDNSCLIENT_H__
+
+#include <e32base.h>
+#include <pnp/pnpparameterbundle.h>
+#include <mdns/cmdnsquerypublishnotifier.h>
+#include <mdns/cmdnsregisternotifier.h>
+#include "mdnsdebug.h"
+class RMdns : public RSessionBase
+ {
+ public:
+ //These are the helper class which help in notifying the application observer
+ //when the query and notify messages are served.
+ friend class CMdnsQueryPublishNotifier;
+ friend class CMdnsRegisterNotifier;
+ /**
+ * Opens a new session with the multicast DNS server. Must be called before
+ * any other function may be used.
+ *
+ * @param aConnectionHandle Handle to the RConnection Object
+ * @param aSocketServerHandle Handle to the RSocketServ Object
+ * @param aObserver The callback function where the return values are commnunicated back
+ * along with the error codes.
+ * @return A CService object comprising a complete description of the service parameters.
+ * @brief Opens a new session with the zeroconf server.
+ */
+
+ IMPORT_C TInt Open(TInt aConnectionHandle);
+
+
+ /**
+ * ASynchronously lists all the available servicves of the type specified.
+ *
+ * @param aServiceType A unicode descriptor containing the type of the service you wish to resolve, including leading underscore (e.g. '_http'.)
+ * @param aProtocol The protocol the service runs over, one of TCP or UDP.
+ * @brief Asynchronously resolves a network service.
+ */
+
+ IMPORT_C void QueryL( const RPnPParameterBundle& aQueryParams );
+
+
+ /**
+ * ASynchronously resolves a network service. The results are returned using the Observer callback
+ *
+ * @param aServiceName A unicode descriptor containing the name of the service you wish to resolve.
+ * @param aServiceType A unicode descriptor containing the type of the service you wish to resolve, including leading underscore (e.g. '_http'.)
+ * @param aProtocol The protocol the service runs over, one of TCP or UDP.
+ * @brief Asynchronously resolves a network service.
+ */
+
+ IMPORT_C void ResolveL( const RPnPParameterBundle& aResolveParams );
+
+
+
+ /**
+ * Registers a service on the local device and will send out presence announcement on the local link
+ *
+ * @param aServiceName A unicode descriptor containing the name of the service you wish to register.
+ * @param aServiceType A unicode descriptor containing the type of the service you wish to register, including leading underscore (e.g. '_http'.)
+ * @param aProtocol The protocol the service runs over, one of TCP or UDP.
+ * @return Service registration id is returned
+ * @brief
+ */
+
+ IMPORT_C void RegisterServiceL( const RPnPParameterBundle& aPublishParams ,TBool aIsUpdate = EFalse);
+
+
+
+ /**
+ * Register receiving notification on the desired service instance names or types
+ *
+ * @param aServiceName A unicode descriptor containing the name of the service you wish to register for notification.
+ * @param aServiceType A unicode descriptor containing the type of the service you wish to register for notification,
+ * @param aProtocol The protocol the service runs over, one of TCP or UDP.
+ * @return Service registration id is returned
+ * @brief
+ */
+
+ IMPORT_C void WaitForNotificationL( const RPnPParameterBundle& aNotifyParams );
+
+
+ /**
+ * Cancel the ongoing request.
+ *
+ * @param aRequestType A enum specifying the type of request to be canceled.
+ * @param aServiceName A unicode descriptor containing the name of the service .
+ * @param aServiceType A unicode descriptor containing the type of the service ,
+ * @param aProtocol The protocol the service runs over, one of TCP or UDP.
+ * @return
+ * @brief
+ */
+
+ IMPORT_C TInt Cancel( const RPnPParameterBundle& aCancelParams );
+
+
+
+
+ /**
+ *
+ * De-register the service from the device and send out absence announcement on the local-link
+ *
+ * @param aServiceRegId A integer id that uniquely identifies a registered service.
+ * @return Success or failure of the close request.
+ * @brief
+ */
+
+ IMPORT_C TInt Close();
+
+ /**
+ Default Constructor
+ */
+ IMPORT_C RMdns::RMdns();
+
+
+ private:
+ /*
+ * Based on the buffer size set by the query request Recieve Message is called
+ * which return the set of records got from the query.
+ * @param aData reference to a buffer to which the records should be set.
+ */
+ void RecieveMessage(TDes8& aData);
+ /*
+ * These is an asynchroonous request called internally by the WaitForNotification request.
+ * @param aData contains the list of new ptr records recieved on WaitForNotification request.
+ * @param aStatus used to complete asynchronous request.
+ */
+ void RecieveNotifyMessageL(TDes8& aData,TRequestStatus& aStatus);
+ private:
+ /*
+ * Query and publish request will be notifies to this object.
+ */
+ CMdnsQueryPublishNotifier* iEventNotifier;
+ /*
+ * Register for a paritcular record will be notified to this object.
+ */
+ CMdnsRegisterNotifier* iRegisterNotifier;
+ /*
+ *Buffer used to store the data in the RPnPParameter bundle and send it across to
+ *the server.
+ */
+ HBufC8* iBuffer;
+ /*
+ * Keeps the count of entries requested for notification.
+ */
+ TInt iNotifierCount;
+ /*
+ * Pointer to the descriptor iBuffer.
+ */
+ TPtr8 iBufPointer;
+ /**
+ FLOGGER debug trace member variable.
+ */
+ __FLOG_DECLARATION_MEMBER_MUTABLE;
+ };
+
+
+#endif /* __MDNSCLIENT_H__ */