diff -r 78fbd574edf4 -r da856f45b798 zeroconf/client/inc/cmdnsclient.h --- /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 +#include +#include +#include +#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__ */