Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

std::map<int, StateType>& Impala::Core::VideoJob::ServerProxy::MonitorJobState ( Data vpData  )  [inline]

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:


Generated on Thu Jan 13 09:21:42 2011 for ImpalaSrc by  doxygen 1.5.1