--- /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