--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/natplugins/natpnatfwsdpprovider/inc/nspactionset.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2007 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: State machine actions set.
+*
+*/
+
+#ifndef NSPACTIONSET_H
+#define NSPACTIONSET_H
+
+#include <e32base.h>
+#include "nsppluginreturndef.h"
+#include "mnatfwconnectivityobserver.h"
+#include "nspsession.h"
+
+class CSdpDocument;
+
+/**
+ * State machine action set.
+ *
+ * Class implements actions that are executed in certain states.
+ * Each action is atomic.
+ *
+ * @lib natfwsdpprovider.dll
+ * @since S60 3.2
+ */
+class TNSPActionSet
+ {
+public: // Constructors and destructor
+
+ /**
+ * Default C++ constructor.
+ *
+ * @since S60 3.2
+ * @param aSession Session object reference.
+ */
+ TNSPActionSet( CNSPSession& aSession );
+
+
+public: // New functions
+
+ /**
+ * Method is used to create NATFW streams according to the sdp document.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @return Returns 'KNatAsync' if streams were created,
+ * otherwise 'KNatReady'.
+ */
+ TNatReturnStatus CreateStreamsL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to remove NATFW streams according to the sdp document.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @return Returns 'KNatAsync' if streams were removed,
+ * otherwise 'KNatReady'.
+ */
+ TNatReturnStatus RemoveStreamsL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to control NATFW streams.
+ *
+ * @since S60 3.2
+ * @param aStreamId Stream identifier.
+ * @param aEvent Stream event.
+ * @param aError Error code for specific stream, and event.
+ * @param aData Event specific data.
+ * @return Returns 'KNatReady' if media is ready, otherwise 'KNatAsync' or
+ * error code is returned.
+ */
+ TNatReturnStatus ControlMediaL( TUint aStreamId,
+ MNATFWConnectivityObserver::TNATFWConnectivityEvent aEvent,
+ TInt aError, TAny* aData );
+
+ /**
+ * Method is used to modify Sdp document which is sent to the session peer.
+ * This method also adds NAT protocol specific attributes to Sdp document.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @param aStoreSdp Flag indicating whether to clone given Sdp.
+ */
+ void FirstRoundL( CSdpDocument& aDoc, TBool aStoreSdp = ETrue );
+
+ /**
+ * Method is used to modify Sdp document which is sent to the session peer.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ */
+ void LatterRoundL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to modify Sdp document which is given to the local host.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ */
+ void LocalRoundL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to check the need of update, and to generate new offer,
+ * if updated O/A exchange is needed.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference, local media desc.
+ */
+ void UpdateRoundL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to retrieve ice - credentials from the given Sdp document.
+ * Return status informs whether credentials have changed.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @return KNatAsync if credentials changed in some level.
+ * KNatReady otherwise.
+ */
+ TNatReturnStatus GetCredentialsL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to retrieve ice - candidates from the given Sdp document.
+ * Return status informs whether candidates have changed.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @return KNatAsync if candidates changed in some level.
+ * KNatReady otherwise.
+ */
+ TNatReturnStatus GetCandidatesL( CSdpDocument& aDoc );
+
+ /**
+ * This method is used to check session modifiers that affect on ICE
+ * role, and ICE processing in general
+ *
+ * @since S60 3.2
+ * @param aDoc Session Sdp document object.
+ * @param aRole Role of the document.
+ * @return Nat status, if asynchronous processing needed,
+ * KNatAsync is returned. Otherwise KNatReady.
+ */
+ TNatReturnStatus GetSessionModifiersL( CSdpDocument& aDoc,
+ CNSPSession::TSdpRole aRole = CNSPSession::EUndefined );
+
+ /**
+ * Method is used to retrieve transport addresses from m/c -lines,
+ * from the given Sdp document. Return status informs if any changes were made.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ * @return KNatAsync if modifiers changed in some level.
+ * KNatReady otherwise.
+ */
+ TNatReturnStatus GetSessionConnInfoL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to remove Ice candidates & remove Ice strings.
+ *
+ * @since S60 3.2
+ */
+ void RestartWithoutIce();
+
+ /**
+ * Method is used to load the correct plugin in NATFW.
+ *
+ * @since S60 3.2
+ */
+ void LoadPluginL();
+
+ /**
+ * Method is used to activate sending/receiving in external NATFW's socket.
+ *
+ * @since S60 3.2
+ * @param aDoc Sdp document reference.
+ */
+ void ActivateL( CSdpDocument& aDoc );
+
+ /**
+ * Method is used to deactivate sending/receiving in external NATFW's socket.
+ *
+ * @since S60 3.2
+ */
+ void DeActivateL();
+
+ /**
+ * Method is used to initiate local candidate search in NATFW.
+ *
+ * @since S60 3.2
+ */
+ void FetchL();
+
+ /**
+ * Method is used to set ICE role to NATFW.
+ *
+ * @since S60 3.2
+ */
+ void SetRoleL();
+
+ /**
+ * Method is used to set ICE Inbound credentials to NATFW.
+ *
+ * @since S60 3.2
+ */
+ void SetInboundCredentialsL();
+
+ /**
+ * Method is used to set ICE Outbound credentials to NATFW.
+ *
+ * @since S60 3.2
+ */
+ void SetOutboundCredentialsL();
+
+ /**
+ * Method is used to initiate connectivity checks in NATFW.
+ *
+ * @since S60 3.2
+ */
+ void ConnChecksL();
+
+ /**
+ * Method is used to initiate remote candidate update to NATFW.
+ *
+ * @since S60 3.2
+ */
+ void UpdateL();
+
+private: // data
+
+ /**
+ * Session instance
+ */
+ CNSPSession& iSession;
+
+ };
+
+#endif // NSPACTIONSET_H
+
+// end of file