Definition at line 110 of file ServerProxy.h. References Impala::Util::StringParser::GetInt(), Impala::Util::StringParser::GetString(), ILOG_ERROR, mChannelProxy, Impala::Core::VideoJob::Data::mJobsScheduled, mRequestIntervalSec, Impala::Util::ChannelProxy::Send(), and Impala::Util::Sleep(). Referenced by Impala::Core::VideoJob::Manager::MonitorJobs(). 00111 { 00112 static std::map<int, StateType> jobsWithStateChanged; 00113 jobsWithStateChanged.clear(); 00114 00115 std::ostringstream oss; 00116 std::map<int, Data::VideoJob*>::iterator jobIter = 00117 vpData.mJobsScheduled.begin(); 00118 for ( ; jobIter != vpData.mJobsScheduled.end(); jobIter++ ) 00119 { 00120 Data::VideoJob& job = *(jobIter->second); 00121 oss << job.id << ':' << job.state << ' '; 00122 } 00123 String request = "ProvideStatus:reference=" + oss.str(); 00124 00125 do 00126 { 00127 String response = mChannelProxy->Send(request); 00128 Util::StringParser parser(response); 00129 String responseType = parser.GetString(':', false); 00130 if (responseType == "NoChange") 00131 { 00132 Util::Sleep(mRequestIntervalSec); 00133 } 00134 else if (responseType == "JobStatus" && 00135 parser.GetString('=') == "changed") 00136 { 00137 int jobId = parser.GetInt(':', false, true); 00138 while (jobId > 0) 00139 { 00140 StateType jobState = (StateType) parser.GetInt(' ', true, 00141 true); 00142 jobsWithStateChanged[jobId] = jobState; 00143 jobId = parser.GetInt(':', false, true); 00144 } 00145 } 00146 else 00147 { 00148 ILOG_ERROR("Job report request failed: " << response); 00149 jobsWithStateChanged.clear(); 00150 break; 00151 } 00152 } 00153 while (jobsWithStateChanged.empty()); 00154 00155 return jobsWithStateChanged; 00156 }
Here is the call graph for this function:
|