diff -r 000000000000 -r 1bce908db942 natfw/natfwstunturnclient/inc/mstunbindingobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/natfw/natfwstunturnclient/inc/mstunbindingobserver.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,181 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +#ifndef M_STUNBINDINGOBSERVER_H +#define M_STUNBINDINGOBSERVER_H + +// INCLUDES +#include +#include "natfwunsaftransactionid.h" +#include "tstuncallbackinfo.h" +#include "natfwstunclientdefs.h" + +// FORWARD DECLARATIONS +class CSTUNClient; +class CBinding; + +// CLASS DECLARATION + +/** + * Defines the services that CSTUNClientImplementation provides to + * CSTUNBinding. + */ +class MSTUNBindingObserver + { +public: // Destructor + + /** + * Destructor + */ + virtual ~MSTUNBindingObserver() {} + +public: // New pure virtual functions + + /** + * Returns the associated CSTUNClient instance. + * + * @return CSTUNClient + */ + virtual const CSTUNClient& STUNClient() const = 0; + + /** + * Retrieves the user timer service provider. + * @return CDeltaTimer& Timer services + */ + virtual CDeltaTimer& TimerProvider() = 0; + + /** + * Retrieves the retransmission interval to use with Binding Requests. + * @return Retransmission interval + */ + virtual TInt RetransmitInterval() const = 0; + + /** + * Retrieves the transport protocol to use with Binding Requests. + * @return Transport protocol + */ + virtual TTransportProtocol TransportProtocol() const = 0; + + /** + * Binding has obtained a public IP address. + * @param aBinding Binding for which the address was obtained + */ + virtual void AddressResolvedL( const CBinding& aBinding ) const = 0; + + /** + * Requests a shared secret (username and password). + * STUN client provides the username and password to binding with + * SharedSecretObtainedL function. If STUN client is currently retrieving a + * new shared secret after the previous one expired, it may take some time + * until it calls SharedSecretObtainedL. + * @param aBinding Binding requesting the information + */ + virtual void ObtainSharedSecretL( CBinding& aBinding ) = 0; + + /** + * Inform the STUN client that a remote server has rejected certain + * username and password. + * @param aBinding Binding that was using the username and password. + * @param aUsername Username that was rejected. Can be empty (zero length) + * descriptor, if STUN server provided such a value. + * @param aPassword Password that was rejected. Can be empty (zero length) + * descriptor, if STUN server provided such a value. + * @return ETrue if the Binding should retry, EFalse if binding should + * terminate. + */ + virtual TBool SharedSecretRejectedL( const CBinding& aBinding, + const TDesC8& aUsername, + const TDesC8& aPassword ) = 0; + + /** + * Requests the UDP address of a STUN server, where the Binding Request + * will be sent. + * @param aAddress IN: The address that this binding has already tried but + * failed because the STUN server did not respond, or + * there was a UNSAF transport layer error. + * If the binding has not yet sent a Binding Request, + * then aAddress should contain an unspecified address + * (for IPv4 it means address 0.0.0.0, and for IPv6 an + * address of ::). + * OUT: The address that binding should try next. + * @return ETrue Address successfully obtained + * EFalse No address available + */ + virtual TBool ObtainServerAddress( TInetAddr& aAddress ) = 0; + + /** + * Requests a new UNSAF transaction ID. + * @param aTransactionID OUT: New TransactionID + */ + virtual void + ObtainTransactionIDL( TNATFWUNSAFTransactionID& aTransactionID ) = 0; + + /** + * A new binding has been created and it is associated with the STUN + * client. + * @param aBinding Binding to attach + */ + virtual void AttachBindingL( const CBinding& aBinding ) = 0; + + /** + * CSTUNBinding is being deleted, all references to it must be cleared, + * including any pending callbacks referring to it. + * @param aBinding Binding to detach + */ + virtual void DetachBinding( const CBinding& aBinding ) = 0; + + /** + * CSTUNBinding has terminated because an error occurred. + * @param aBinding Binding that encountered the error + * @param aError Error reason + * @param aIsFatal ETrue if error is unrecoverable + */ + virtual void BindingErrorL( const CBinding& aBinding, + TInt aError, TBool aIsFatal ) = 0; + + /** + * Binding event occurred, client must be notified + * + * @since s60 3.2 + * @param aBinding Binding + * @param aEvent event + * @return void + */ + virtual void BindingEventOccurred( + const CBinding& aBinding, TSTUNCallbackInfo::TFunction aEvent ) = 0; + + /** + * Get username for indication + * + * @since s60 3.2 + * @return username + */ + virtual const TDesC8& UsernameForIndication() = 0; + + /** + * Get password for indication + * + * @since s60 3.2 + * @return password + */ + virtual const TDesC8& PasswordForIndication() = 0; + }; + +#endif // M_STUNBINDINGOBSERVER_H