Beispiel #1
0
void CSEIConnector::RunL()
	{
	TInt error = KErrNone;
	switch(iState)
		{
		case EGetByName:
			{
			ConnectSocketL();
			break;
			}
		case ESocketConnect:
			{
			ProcessRequestL();
			break;
			}
		}
	}
// -----------------------------------------------------------------------------
// CSIPSecTlsPlugin::ProcessSecurityVerifyL
// After the framework has chosen security mechanism. it calls this function of
// the selected mechanism for all outgoing requests using the security
// agreement.
// Check that both Security-Server and Security-Verify header exist for this
// mechanism.
// -----------------------------------------------------------------------------
//
void CSIPSecTlsPlugin::ProcessSecurityVerifyL(
	TSIPTransportParams& aTransportParams,
	CSIPRequest& /*aRequest*/,
	TInetAddr& aNextHop,
	const CUri8& /*aRemoteTarget*/,
	const TDesC8& /*aOutboundProxy*/,
	MSIPSecUser* aUser,
	TRegistrationId /*aRegistrationId*/,
	RPointerArray<CSIPSecurityServerHeader>& aSecurityServer,
	RPointerArray<CSIPSecurityVerifyHeader>& aSecurityVerify )
	{
	__ASSERT_ALWAYS( aUser, User::Leave( KErrArgument ) );

	TInt i = 0;
	CSIPSecurityServerHeader* secServer = NULL;
	for ( i = 0; i < aSecurityServer.Count() && !secServer; ++i )
		{
		if ( aSecurityServer[i]->MechanismName().CompareF( Name() ) == 0 )
            {
            secServer = aSecurityServer[i];
            }
		}
	__ASSERT_ALWAYS( secServer, User::Leave( KErrArgument ) );

	CSIPSecurityVerifyHeader* secVerify = NULL;
	for ( i = 0; i < aSecurityVerify.Count() && !secVerify; ++i )
		{
		if ( aSecurityVerify[i]->MechanismName().CompareF( Name() ) == 0 )
            {
            secVerify = aSecurityVerify[i];
            }
		}
	__ASSERT_ALWAYS( secVerify, User::Leave( KErrArgument ) );

	ProcessRequestL( aTransportParams, aNextHop, *aUser );
	}
//----------------------------------------------------------------
// CLbsLocMonitorConversionHandler::RunL
// (other items were commented in a header).
//----------------------------------------------------------------
void CLbsLocMonitorConversionHandler::RunL()
    {
    LBSLOG(ELogP1,"CLbsLocMonitorConversionHandler::RunL()");
    TBool cacheSaveComplete = EFalse;
    switch(iState)
        {
        case EStateValidation:
            {
            // This validation result corresponds to the first request in the validation 
            // queue.
            iConversionRequest = iValidationRequestQueue[KCurrentRequestIndex];
            if(iStatus.Int() == KErrNone)
                {
                // On successful validation, process the request
                ProcessRequestL();
                }
            else
                {
                iConversionRequest.Complete(iStatus.Int());
                RequestCompleteL();
                }
            break;
            }
        case EStateConversion:
            {
            if(iStatus.Int() == KErrNone)
                {
                //First we loop through comparing accuracies to any partial results we may have had
                FillInPartialL();
                
                TLbsConversionPluginInfo pluginPreferences; 
                iLocInfoConverterPlugIn->ConversionPluginPreferences(pluginPreferences);
                
                // Then save all things we are allowed to, to the cache
                if(pluginPreferences.IsPluginPositionToBeCached())
                    {
                    iSavedToCacheCount = 0;
                    cacheSaveComplete = CacheSaveL();
                    if(cacheSaveComplete)
                        {
                        iState = EStateCacheSaveComplete;
                        }
                    }
                else
                    {
                    WriteResultToBufferL();
                    
                    // Send the required buffer size to the client.
                    TInt size = iBuffer->Size();
                    TPckg<TInt> sizePckg(size);
                    iConversionRequest.WriteL(KParamBufferSize,sizePckg);
                    CompleteRequest(iConversionRequest,KErrNone);
                    }
                }
            else 
                {
                // Since there is error in conversion, server dont receive  
                // any call to retrieve converted info.Hence we need to 
                // remove the current request.
                CompleteRequest(iConversionRequest,iStatus.Int());
                RequestCompleteL();
                }
            break;
            }
        case EStateCacheSave:
            {
            cacheSaveComplete = CacheSaveL();
            if(cacheSaveComplete)
                {
                iState = EStateCacheSaveComplete;
                }
            break;
            }
        case EStateCacheSaveComplete:
            {
            // fall through
            break;
            }
        default:
            {
            User::Invariant();
            }
        }
    if(iState == EStateCacheSaveComplete)
        {
        WriteResultToBufferL();
        
        // Send the required buffer size to the client.
        TInt size = iBuffer->Size();
        TPckg<TInt> sizePckg(size);
        iConversionRequest.WriteL(KParamBufferSize,sizePckg);
        CompleteRequest(iConversionRequest,KErrNone);
        }
    }