void UT_CMceEventReferMoEstablishedState::SetupFullL( ) { iEventState = 0; iReceived = 0; iState = new( ELeave ) CMceEventReferMoEstablishedState(); SIPStrings::OpenL(); iSipProfile = CSIPProfile::NewL(); iConnection = CMceSipConnection::NewL( *iSipProfile ); iSIPEvent = CMceSipEvent::NewL( *iConnection, *this ); iSIPEvent->SetEventStateType( EMoRefer ); MCE_DELETE( iSIPEvent->iEvent ); iEvent = CMceComEvent::NewL( *iSIPEvent, KDefaultExpires ); iSIPEvent->iEvent = iEvent; iSIPEvent->SetCurrentState( KMceEstablishedEventStateIndex ); // create dialog CSIPReferDialogAssoc* referDlg = CSIPReferDialogAssoc::NewL(); iSIPEvent->SetDialog( referDlg ); // Create server transaction CSIPServerTransaction* serverTran = CSIPServerTransaction::NewL(); serverTran->SetType( 3 ); // NOTIFY iSIPEvent->iRequest = serverTran; // Create request elements TUriParser8 uriParser; User::LeaveIfError( uriParser.Parse( KRemoteUri() ) ); CUri8* remoteUri = CUri8::NewL(uriParser); CleanupStack::PushL(remoteUri); CSIPRequestElements* elem =CSIPRequestElements::NewL( remoteUri ); CleanupStack::Pop( remoteUri ); serverTran->SetRequestElements( elem ); iMsgElem = &elem->MessageElements(); }
// ----------------------------------------------------------------------------- // MceSip::DoDiscardRequestL // ----------------------------------------------------------------------------- // void MceSip::DoDiscardRequestL( CSIPServerTransaction& aRequest, TInt aError, TBool aRetryIndication ) { CSIPResponseElements* response = NULL; TUint responseCode = 0; if ( aError >= (TInt)KMceSipTrying ) { responseCode = (TUint)aError; RStringF reasonPhrase = ReasonPhraseL( responseCode ); CleanupClosePushL( reasonPhrase ); response = CSIPResponseElements::NewL( responseCode, reasonPhrase ); CleanupStack::PopAndDestroy();//reasonPhrase } else { TInt reasonPhrase = 0; ErrorResponse( aError, responseCode, reasonPhrase ); response = CSIPResponseElements::NewL( responseCode, SIPStrings::StringF( reasonPhrase ) ); } CleanupStack::PushL( response ); if ( aRetryIndication ) { CSIPMessageElements& elements = response->MessageElements(); //create Retry-After header RPointerArray<CSIPHeaderBase> headers; CSIPHeaderBase::PushLC( &headers ); CSIPRetryAfterHeader* retryAfter = CSIPRetryAfterHeader::NewLC( Random( KMceRandMinRetryValue, KMceRandMaxRetryValue ) ); headers.AppendL( retryAfter ); CleanupStack::Pop( retryAfter ); //send invitation elements.SetUserHeadersL( headers ); CleanupStack::Pop( &headers ); } aRequest.SendResponseL( response ); CleanupStack::Pop( response ); }
// ----------------------------------------------------------------------------- // MceSip::Method // ----------------------------------------------------------------------------- // RStringF MceSip::Method( CSIPServerTransaction& aRequest ) { const CSIPRequestElements* request = aRequest.RequestElements(); if ( request ) { return request->Method(); } else { return SIPStrings::StringF( SipStrConsts::EEmpty ); } }
// ----------------------------------------------------------------------------- // CSIPExSIPServerOfferingState::ByeReceivedL() // (other items were commented in a header). // ----------------------------------------------------------------------------- void CSIPExSIPServerOfferingState::ByeReceivedL( CSIPExSIPEngine& aEngine, CSIPServerTransaction& aTransaction ) { // Create and send response CSIPResponseElements* elem = CSIPResponseElements::NewLC( 200, SIPStrings::StringF( SipStrConsts::EPhraseOk ) ); aTransaction.SendResponseL( elem ); CleanupStack::Pop( elem ); // Inform observer aEngine.Observer()->SessionEnded(); // Set state aEngine.SetCurrentState( iTerminatedState ); }