TPolicyResponse CAudioPolicy::ProcessRequest(CMMFAudioPolicyRequest* aAudioPolicyRequest) { // If there is no other item on list, return with proceed if (iAudioPolicyRequestArray->Count()==0) { return EProceed; } TPolicyResponse responseValue(EProceed); TInt requestPriority = aAudioPolicyRequest->Priority(); TBool requestCaps = aAudioPolicyRequest->Capabilities(); // Iterate through list and compare priorities: // QUEST: state checking shall be done as well? for (TInt index = 0; index < iAudioPolicyRequestArray->Count(); index++) { CMMFAudioPolicyRequest& currentReq=*(*iAudioPolicyRequestArray)[index]; if (!IsActiveState(currentReq.State()) ) // this request is inactive { continue; } // If there's even one on the list w/ a higher priority deny request and leave: if (currentReq.Capabilities() > requestCaps) { responseValue = EDenied; break; } else if(currentReq.Capabilities() == requestCaps) { if(currentReq.Priority() >= requestPriority) { responseValue = EDenied; break; } } if (currentReq.State()==EMMFStateWaitingForResource || currentReq.State()==EMMFStatePreempted) { continue; } // we need to stop active client since new request is of higher priority TMMFAudioPolicyEvent freezeEvent(TMMFAudioPolicyEvent::EMMFAudioPolicyPriorityTooLow, KErrInUse, EMMFStatePaused); #if defined(ALLOW_POLICY_DEBUG) RDebug::Print(_L("Sess ID=%d, State=%d Has been preempted"),currentReq.PolicySessionId(),currentReq.State()); #endif currentReq.SetState( EMMFStatePreempted ); currentReq.SetEventFlag(EFalse); iAudioPolicyServer->SendEventToClient(currentReq.PolicySessionId(), freezeEvent); responseValue = EStopThenProceed; } return responseValue; }
VectorXf param_sensitivity_widget::readResponseValues( QStringList realizations,QString response) { // Sort the realizations stringlist realizations.sort(); SmartPtr<Named_interface> ni = Root::instance()->interface( metricData_manager + "/metricRegistrar"); MetricDataManager* mRegistrar = dynamic_cast<MetricDataManager*>(ni.raw_ptr()); // Grab the grid name std::string gridName = mdsObject_->getGridName(0); // Obtain pointer to metricToProperties map MetricDataToProperties propFromMetricRegistrar = mRegistrar->get_properties_for_metric(response.toStdString()); // Determine what kind of metricData we are looking at std::string response_type = propFromMetricRegistrar. data_type().toStdString(); // Response values VectorXf responseValue(realizations.size()); if (response_type == "MetricTimeSeriesData") { for (unsigned int i = 0; i < realizations.size(); ++i ) { MetricData* mdata = mRegistrar->getMetricData(gridName, realizations.at(i). toStdString(), response.toStdString()); // Should be a safe cast as this function is only called for data that // has form "TimeSeries" MetricTimeSeriesData *mDataTS = static_cast<MetricTimeSeriesData*>(mdata); // Get number of data points in this response for particular property // We assume that the data/time have same number of points int numDataPoints = mDataTS->data().size(); responseValue[i] = (mDataTS->data().at(numDataPoints -1)); } } return responseValue; }