View Javadoc

1   package fr.in2p3.jsaga.engine.job.monitor.poll;
2   
3   import fr.in2p3.jsaga.adaptor.job.monitor.JobStatus;
4   import fr.in2p3.jsaga.adaptor.job.monitor.QueryIndividualJob;
5   import fr.in2p3.jsaga.engine.job.monitor.JobMonitorCallback;
6   import org.apache.log4j.Logger;
7   
8   import java.util.Set;
9   import java.util.Map.Entry;
10  
11  /* ***************************************************
12  * *** Centre de Calcul de l'IN2P3 - Lyon (France) ***
13  * ***             http://cc.in2p3.fr/             ***
14  * ***************************************************
15  * File:   IndividualJobStatusPoller
16  * Author: Sylvain Reynaud (sreynaud@in2p3.fr)
17  * Date:   11 janv. 2008
18  * ***************************************************
19  * Description:                                      */
20  /**
21   *
22   */
23  public class IndividualJobStatusPoller extends AbstractJobStatusPoller {
24      private static Logger s_logger = Logger.getLogger(IndividualJobStatusPoller.class);
25      private QueryIndividualJob m_adaptor;
26  
27      public IndividualJobStatusPoller(QueryIndividualJob adaptor) {
28          super();
29          m_adaptor = adaptor;
30      }
31  
32      public void run() {
33          //TODO: should be multi-threaded
34          Set<Entry<String, JobMonitorCallback>> entries;
35          synchronized(m_subscribedJobs) {
36              entries = m_subscribedJobs.entrySet();
37          }
38          for (Entry<String, JobMonitorCallback> entry : entries) {
39              String nativeJobId = (String) entry.getKey();
40              JobMonitorCallback callback = (JobMonitorCallback) entry.getValue();
41              try {
42                  JobStatus status = m_adaptor.getStatus(nativeJobId);
43                  callback.setState(status.getSagaState(), status.getStateDetail(), status.getSubState(), status.getCause());
44              } catch (Exception e) {
45                  s_logger.warn("Failed to get status for job: "+ nativeJobId, e);
46              }
47          }
48      }
49  }