diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/ServerResolver/inc/CSIPServerResolver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/ServerResolver/inc/CSIPServerResolver.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,168 @@ +/* +* Copyright (c) 2006-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: +* Name : CSIPServerResolver.h +* Part of : ServerResolver +* Version : SIP/5.0 +* +*/ + + + + +/** + @internalComponent +*/ +#ifndef CSIPSERVERRESOLVER_H +#define CSIPSERVERRESOLVER_H + +//INCLUDES +#include +#include +#include +#include "_sipcodecdefs.h" + +// FORWARD DECLARATIONS +class CURIBase; +class CSIPViaHeader; +class MSIPServerResolverObserver; +class CSIPHostResolver; +class CSIPHostPort; +class CSIPURI; +class MSIPResolvingResult; +class CServerQuery; +class CURIContainer; + +// CLASS DEFINITION +/** + * CSIPServerResolver implements a + */ +class CSIPServerResolver : public CBase + { + public:// Constructors and destructor + + /** + * Creates a new CSIPServerResolver instance + * @param aServer for server session + * @param aConnection for connection + * @returns a new instance of CSIPServerResolver + */ + static CSIPServerResolver* NewL( RSocketServ& aServer, + RConnection& aConnection ); + + /** + * Creates a new CSIPServerResolver instance + * and pushes it to CleanupStack + * @param aServer for server session + * @param aConnection for connection + * @returns a new instance of CSIPServerResolver + */ + static CSIPServerResolver* NewLC( RSocketServ& aServer, + RConnection& aConnection ); + + /** + * Destructor. + */ + ~CSIPServerResolver(); + + public: + + /** + * Resolves a CURIBase object to 0..n MSIPResolvingResult objects + * asynchronously. MSIPServerResolverObserver is called when + * resolving completes. + * + * + * @param aURI The URI to be resolved. + * Not used after this function returns. + * @param aSkipNaptrAndSrvQueries if ETrue skip NAPTR and SRV + * queries and perform only A/AAAA query + * @param aResult an array for the resolved results. + * @param aObserver callback that will be used when resolving + * has been completed. The ownership is not transferred. + * Function accept only one same aObserver pointer at the time, + * otherwise function leave with errorcode KErrAlreadyExists + */ + void GetByURIL( const CURIContainer& aURI, + TBool aSkipNaptrAndSrvQueries, + RPointerArray< MSIPResolvingResult >& aResult, + MSIPServerResolverObserver* aObserver ); + + /** + * Resolves a CSIPViaHeader object to 0..n MSIPResolvingResult objects + * asynchronously. MSIPServerResolverObserver is called when + * resolving completes. + * + * @param aVia The Via-header to be resolved. + * Not used after this function returns. + * @param aResult an array for the resolved results. + * @param aObserver callback that will be used when resolving + * has been completed. The ownership is not transferred. + * Function accept only one same aObserver pointer at the time, + * otherwise function leave with errorcode KErrAlreadyExists + */ + void GetByViaL( CSIPViaHeader& aVia, + RPointerArray< MSIPResolvingResult >& aResult, + MSIPServerResolverObserver* aObserver ); + + /** + * Cancels all outstanding operations for the given observer. + * + * @param aObserver The observer. + * + */ + void Cancel( MSIPServerResolverObserver* aObserver ); + + private:// Constructors and destructor + + CSIPServerResolver(); + + void ConstructL( RSocketServ& aServer, + RConnection& aConnection ); + + private:// New methods + + void ChooseQueryL( MSIPServerResolverObserver* aObserver, + const TDesC8& aTarget, + RPointerArray< MSIPResolvingResult >& aResult, + TBool aSipsUri, + TUint aPort, + RStringF aProtocol, + TBool aForceUDP = EFalse, + TBool aSkipNaptrAndSrvQueries = EFalse ); + + void SetA_AAAAQueryL( CServerQuery* aQuery ); + + void SetSRVQueryL( CServerQuery* aQuery ); + + void SetNaptrQueryL( CServerQuery* aQuery ); + + RStringF TransportProtocolL( const CSIPURI& aURI, + TBool& aForceUdp ) const; + + RStringF DefaultTransport( TBool aSipsUri ) const; + + TUint DefaultPort( TBool aUseTls ) const; + + private://data + + CSIPHostResolver* iResolver; + + private: // For testing purposes + + UNIT_TEST(CSIPServerResolverTest) + }; +#endif // end of CSIPSERVERRESOLVER_H + +// End of File