diff -r 000000000000 -r af10295192d8 tcpiputils/dnd/inc/resolver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tcpiputils/dnd/inc/resolver.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,72 @@ +// 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: +// resolver.h - name resolver +// + +#ifndef __RESOLVER_H__ +#define __RESOLVER_H__ + +/** +@file resolver.h +Resolver for a query from single client +@internalComponent Domain Name Resolver +*/ + +#include + +class CDndListener; +class CDndEngine; +class MDnsSource; + +/** +// Name resolver side of the RHostResolver +// +// When application opens the RHostResolver, a connection through TCP/IP stack +// is created, using a chain of intermediate objects and a socket. A class +// implementing from a MDndResolver is the other end of the "chain": +// +// RHostResolver <--- .... ---> MDndResolver +// +// There is a limited pool of MDndResolvers, which are reused for new +// different RHostResolver clients. +// +// It has the following simplified state diagram: +// +@verbatim + __________________ + / reuse \ + V | + construct -> Start() --> [work] --> Stop() --> destruct +@endverbatim +*/ +class MDndResolver + { +public: + // Create a new instance of a resolver + static MDndResolver *New(const TInt aId, CDndEngine &aControl, MDndListener &aListener, MDnsSource &aDnsclient); + // Start serving a request + virtual void Start(const TDnsMessageBuf &aMsg) = 0; + // Stop processing of the current request + virtual void Stop() = 0; + // @return The session id of the current request (or 0, if none) + virtual TUint16 Session() const = 0; + // @return reference to the time of the last request + virtual const TTime &RequestTime() const = 0; + // @return reference to the current reply message + virtual const TDesC8 &ReplyMessage() = 0; + // Allow delete via M-class pointer + virtual ~MDndResolver() {}; + }; + +#endif