S60 3rd Edition SDK for Symbian OS
Example Applications Guide

CSIPExSIPClientOfferingState Class Reference

#include <SIPExSIPClientOfferingState.h>

Inheritance diagram for CSIPExSIPClientOfferingState:

CSIPExSIPStateBase List of all members.

Public Member Functions

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

Static Public Member Functions

static IMPORT_C CSIPExSIPClientOfferingState * NewL ()

Private Member Functions

 CSIPExSIPClientOfferingState ()

Private Attributes

CSIPExSIPStateBase * iIdleState
CSIPExSIPStateBase * iEstablishedState
CSIPExSIPStateBase * iTerminatedState

Detailed Description

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

Definition at line 32 of file SIPExSIPClientOfferingState.h.


Constructor & Destructor Documentation

EXPORT_C CSIPExSIPClientOfferingState::~CSIPExSIPClientOfferingState (   )  [virtual]
 

Destructor

Definition at line 36 of file SIPExSIPClientOfferingState.cpp.

00037         {
00038         }

CSIPExSIPClientOfferingState::CSIPExSIPClientOfferingState (   )  [private]
 

C++ default constructor.

Definition at line 27 of file SIPExSIPClientOfferingState.cpp.

00028         {
00029         }


Member Function Documentation

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

Two-phased constructor.

Definition at line 45 of file SIPExSIPClientOfferingState.cpp.

References CSIPExSIPClientOfferingState().

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

void CSIPExSIPClientOfferingState::LinkStates (  CSIPExSIPStateBase &  aIdleState,
CSIPExSIPStateBase &  aEstablishedState,
CSIPExSIPStateBase &  aTerminatedState
) 
 

Links the states

Parameters:
aIdleState The "waiting for something to happen" state.
aEstablishedState SIP Session is established.
aTerminatedState Peer has declined the invite, SIP Session is terminated.

Definition at line 57 of file SIPExSIPClientOfferingState.cpp.

References iEstablishedState, iIdleState, and iTerminatedState.

00061         {
00062         iIdleState = &aIdleState;
00063         iEstablishedState = &aEstablishedState;
00064         iTerminatedState = &aTerminatedState;
00065         }

void CSIPExSIPClientOfferingState::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 SIPExSIPClientOfferingState.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 CSIPExSIPClientOfferingState::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 SIPExSIPClientOfferingState.cpp.

References CSIPExSIPEngine::DialogAssoc(), iEstablishedState, MSIPExSIPEngineObserver::InviteAcceptedByRemote(), MSIPExSIPEngineObserver::InviteDeclinedByRemote(), MSIPExSIPEngineObserver::InviteReceivedByRemote(), CSIPExSIPEngine::IPAddressFromResponseElementsL(), iTerminatedState, 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 
00107                 // Then, send ACK to remote party
00108                 CSIPInviteDialogAssoc& dialogAssoc = aEngine.DialogAssoc();
00109                 dialogAssoc.SendAckL( aTransaction );
00110 
00111         // Get used iap's id
00112                 TUint32 iapId( 0 );
00113                 CSIPConnection* conn = aEngine.DialogAssoc().Dialog().Connection();
00114                 if ( conn )
00115                     {
00116                     iapId = conn->IapId();
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                 }
00132         else
00133                 {
00134                 aEngine.Observer()->InviteDeclinedByRemote( statusCode );
00135                 aEngine.SetCurrentState( iTerminatedState );
00136                 }
00137         }


© Nokia 2006

Back to top