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__