natfw/natfwstunturnclient/inc/mstunbindingobserver.h
changeset 0 1bce908db942
--- /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 <e32def.h>
+#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