3 #ifndef __ARC_SUBMITTER_H__ 
    4 #define __ARC_SUBMITTER_H__ 
    6 #include <arc/UserConfig.h> 
    8 #include <arc/compute/Endpoint.h> 
    9 #include <arc/compute/EndpointQueryingStatus.h> 
   10 #include <arc/compute/JobDescription.h> 
   11 #include <arc/compute/Job.h> 
   12 #include <arc/compute/SubmitterPlugin.h> 
   13 #include <arc/compute/ExecutionTarget.h> 
   14 #include <arc/compute/EntityRetriever.h> 
   54     bool operator!()
 const { 
return status != SUCCESSFUL; };
 
   56     operator bool()
 const  { 
return status == SUCCESSFUL; };
 
   74     std::string 
str()
 const { 
return str(status); };
 
   78     std::string description;
 
   81   class SubmissionStatus;
 
  221     SubmissionStatus Submit(
const std::list<Endpoint>& endpoint, 
const std::list<JobDescription>& descs, std::list<Job>& jobs);
 
  226     SubmissionStatus 
Submit(
const ExecutionTarget& et, 
const JobDescription& desc, Job& job);
 
  229     SubmissionStatus 
Submit(
const ExecutionTarget& et, 
const std::list<JobDescription>& descs);
 
  230     SubmissionStatus 
Submit(
const ExecutionTarget& et, 
const std::list<JobDescription>& descs, std::list<Job>& jobs);
 
  237     SubmissionStatus BrokeredSubmit(
const std::list<std::string>& endpoints, 
const std::list<JobDescription>& descs, 
const std::list<std::string>& requestedSubmissionInterfaces = std::list<std::string>());
 
  238     SubmissionStatus BrokeredSubmit(
const std::list<std::string>& endpoints, 
const std::list<JobDescription>& descs, std::list<Job>&, 
const std::list<std::string>& requestedSubmissionInterfaces = std::list<std::string>());
 
  239     SubmissionStatus BrokeredSubmit(
const std::list<Endpoint>& endpoints, 
const std::list<JobDescription>& descs, 
const std::list<std::string>& requestedSubmissionInterfaces = std::list<std::string>());
 
  240     SubmissionStatus BrokeredSubmit(
const std::list<Endpoint>& endpoints, 
const std::list<JobDescription>& descs, std::list<Job>& jobs, 
const std::list<std::string>& requestedSubmissionInterfaces = std::list<std::string>());
 
  245     const std::list<const JobDescription*>& GetDescriptionsNotSubmitted()
 const { 
return notsubmitted; }
 
  246     void ClearNotSubmittedDescriptions() { notsubmitted.clear(); }
 
  248     const EndpointStatusMap& GetEndpointQueryingStatuses()
 const { 
return queryingStatusMap; }
 
  249     void ClearEndpointQueryingStatuses() { queryingStatusMap.clear(); }
 
  251     const std::map<Endpoint, EndpointSubmissionStatus>& GetEndpointSubmissionStatuses()
 const { 
return submissionStatusMap; }
 
  252     void ClearEndpointSubmissionStatuses() { submissionStatusMap.clear(); }
 
  254     void ClearAllStatuses() { queryingStatusMap.clear(); submissionStatusMap.clear(); }
 
  255     void ClearAll() { notsubmitted.clear(); queryingStatusMap.clear(); submissionStatusMap.clear(); }
 
  259     class ConsumerWrapper : 
public EntityConsumer<Job> {
 
  261       ConsumerWrapper(Submitter& s) : s(s) {}
 
  262       void addEntity(
const Job& j) {
 
  263         for (std::list<EntityConsumer<Job>*>::iterator it = s.consumers.begin(); it != s.consumers.end(); ++it) {
 
  271     SubmissionStatus SubmitNoClear(
const Endpoint& endpoint, 
const std::list<JobDescription>& descs);
 
  273     const UserConfig& uc;
 
  275     EndpointStatusMap queryingStatusMap;
 
  276     std::map<Endpoint, EndpointSubmissionStatus> submissionStatusMap;
 
  278     std::list<const JobDescription*> notsubmitted;
 
  280     std::list<EntityConsumer<Job>*> consumers;
 
  282     static SubmitterPluginLoader& getLoader();
 
  284     static Logger logger;
 
  288 #endif // __ARC_SUBMITTER_H__