S60 3rd Edition SDK for Symbian OS
Example Applications Guide

CSIPExSIPClientEstablishingState Class Reference

#include <SIPExSIPClientEstablishingState.h>

Inheritance diagram for CSIPExSIPClientEstablishingState:

CSIPExSIPStateBase List of all members.

Public Member Functions

virtual IMPORT_C ~CSIPExSIPClientEstablishingState ()
void LinkStates (CSIPExSIPStateBase &aIdleState, CSIPExSIPStateBase &aClientOfferingState, CSIPExSIPStateBase &aEstablishedState)
void CancelInviteL (CSIPExSIPEngine &aEngine)
void ResponseReceivedL (CSIPExSIPEngine &aEngine, CSIPClientTransaction &aTransaction)

Static Public Member Functions

static IMPORT_C CSIPExSIPClientEstablishingState * NewL ()

Private Member Functions

 CSIPExSIPClientEstablishingState ()

Private Attributes

CSIPExSIPStateBase * iIdleState
CSIPExSIPStateBase * iClientOfferingState
CSIPExSIPStateBase * iEstablishedState

Detailed Description

Reacts to events that are possible in "ClientEstablishing" state.

Definition at line 32 of file SIPExSIPClientEstablishingState.h.


Constructor & Destructor Documentation

EXPORT_C CSIPExSIPClientEstablishingState::~CSIPExSIPClientEstablishingState (   )  [virtual]
 

Destructor

Definition at line 36 of file SIPExSIPClientEstablishingState.cpp.

00037         {
00038         }

CSIPExSIPClientEstablishingState::CSIPExSIPClientEstablishingState (   )  [private]
 

C++ default constructor.

Definition at line 27 of file SIPExSIPClientEstablishingState.cpp.

00028         {
00029         }


Member Function Documentation

EXPORT_C CSIPExSIPClientEstablishingState * CSIPExSIPClientEstablishingState::NewL (   )  [static]
 

Two-phased constructor.

Definition at line 45 of file SIPExSIPClientEstablishingState.cpp.

References CSIPExSIPClientEstablishingState().

00046         {
00047         CSIPExSIPClientEstablishingState* self =
00048                 new (ELeave) CSIPExSIPClientEstablishingState();
00049         return self;
00050         }

void CSIPExSIPClientEstablishingState::LinkStates (  CSIPExSIPStateBase &  aIdleState,
CSIPExSIPStateBase &  aClientOfferingState,
CSIPExSIPStateBase &  aEstablishedState
) 
 

Links the states

Parameters:
aIdleState The "waiting for something to happen" state.
aClientOfferingState Provisional response to sent invitiation is received from peer.

Definition at line 57 of file SIPExSIPClientEstablishingState.cpp.

References iClientOfferingState, iEstablishedState, and iIdleState.

00061         {
00062         iIdleState = &aIdleState;
00063         iClientOfferingState = &aClientOfferingState;
00064         iEstablishedState = &aEstablishedState;
00065         }

void CSIPExSIPClientEstablishingState::CancelInviteL (  CSIPExSIPEngine &  aEngine  )  [virtual]
 

CancelInviteL Cancel an INVITE sent previously.

Parameters:
aEngine Reference to Engine object.

Reimplemented from CSIPExSIPStateBase.

Definition at line 72 of file SIPExSIPClientEstablishingState.cpp.

References CSIPExSIPEngine::ClientTx(), iIdleState, MSIPExSIPEngineObserver::InvitationCancelled(), CSIPExSIPEngine::Observer(), and CSIPExSIPEngine::SetCurrentState().

00073         {
00074         // Get the current Client Transaction
00075         CSIPClientTransaction& clientTA = aEngine.ClientTx();
00076 
00077         // Use it the to send CANCEL request
00078     CSIPClientTransaction* ta = clientTA.CancelL();
00079     delete ta;
00080 
00081         aEngine.SetCurrentState( iIdleState );
00082         aEngine.Observer()->InvitationCancelled();
00083         }

void CSIPExSIPClientEstablishingState::ResponseReceivedL (  CSIPExSIPEngine &  aEngine,
CSIPClientTransaction &  aTransaction
)  [virtual]
 

ResponseReceivedL A SIP response has been received from the network.

Parameters:
aEngine Reference to Engine object.
aTransaction Contains response elements.

Reimplemented from CSIPExSIPStateBase.

Definition at line 91 of file SIPExSIPClientEstablishingState.cpp.

References CSIPExSIPEngine::DialogAssoc(), iClientOfferingState, iEstablishedState, iIdleState, MSIPExSIPEngineObserver::InviteAcceptedByRemote(), MSIPExSIPEngineObserver::InviteDeclinedByRemote(), MSIPExSIPEngineObserver::InviteReceivedByRemote(), CSIPExSIPEngine::IPAddressFromResponseElementsL(), CSIPExSIPEngine::Observer(), and CSIPExSIPEngine::SetCurrentState().

00094         {
00095         const CSIPResponseElements* respElem = aTransaction.ResponseElements();
00096 
00097         TUint statusCode = respElem->StatusCode();
00098 
00099         if ( statusCode >= 200 && statusCode < 300 )
00100                 {
00101                 // Final Response received from network.
00102                 // Get the IP Address of the remote party from the Response Elements
00103                 const TInetAddr addr = 
00104                             aEngine.IPAddressFromResponseElementsL( *respElem );
00105                 
00106                 // Get used iap's id
00107                 TUint32 iapId( 0 );
00108                 CSIPConnection* conn = aEngine.DialogAssoc().Dialog().Connection();
00109                 if ( conn )
00110                     {
00111                     iapId = conn->IapId();
00112                     }
00113 
00114                 // Then, send ACK to remote party
00115                 CSIPInviteDialogAssoc& dialogAssoc = aEngine.DialogAssoc();
00116                 dialogAssoc.SendAckL( aTransaction );
00117 
00118 
00119                 // After ACKing, notify observer, giving IP Address and IAP id
00120                 // as parameter
00121                 aEngine.Observer()->InviteAcceptedByRemote( addr, iapId );
00122 
00123 
00124                 // Finally, change engine state
00125                 aEngine.SetCurrentState( iEstablishedState );
00126                 }
00127         else if ( statusCode >= 100 && statusCode < 200 )
00128                 {
00129                 // Provisional Response received from network.
00130                 aEngine.Observer()->InviteReceivedByRemote( statusCode );
00131                 aEngine.SetCurrentState( iClientOfferingState );
00132                 }
00133         else
00134                 {
00135                 aEngine.Observer()->InviteDeclinedByRemote( statusCode );
00136                 aEngine.SetCurrentState( iIdleState );
00137                 }
00138         }


© Nokia 2006

Back to top