ARC SDK
JobInformationStorage.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_JOBINFORMATIONSTORAGE_H__
4 #define __ARC_JOBINFORMATIONSTORAGE_H__
5 
6 #include <string>
7 #include <set>
8 
9 #include <arc/compute/Job.h>
10 
11 namespace Arc {
12 
13  class JobInformationStorage;
14 
15  typedef struct {
16  const char *name;
17  JobInformationStorage* (*instance)(const std::string&);
19 
21 
32  public:
34 
49  JobInformationStorage(const std::string& name, unsigned nTries = 10, unsigned tryInterval = 500000)
50  : name(name), nTries(nTries), tryInterval(tryInterval), isValid(false) {}
51  virtual ~JobInformationStorage() {}
52 
54 
57  bool IsValid() const { return isValid; }
58 
60 
63  bool IsStorageExisting() const { return isStorageExisting; }
64 
66 
85  virtual bool ReadAll(std::list<Job>& jobs, const std::list<std::string>& rejectEndpoints = std::list<std::string>()) = 0;
86 
88 
124  virtual bool Read(std::list<Job>& jobs, std::list<std::string>& jobIdentifiers,
125  const std::list<std::string>& endpoints = std::list<std::string>(),
126  const std::list<std::string>& rejectEndpoints = std::list<std::string>()) = 0;
127 
129 
144  virtual bool Write(const std::list<Job>& jobs) { std::list<const Job*> newJobs; std::set<std::string> prunedServices; return Write(jobs, prunedServices, newJobs); }
145 
147 
174  virtual bool Write(const std::list<Job>& jobs, const std::set<std::string>& prunedServices, std::list<const Job*>& newJobs) = 0;
175 
177 
187  virtual bool Clean() = 0;
188 
190 
203  virtual bool Remove(const std::list<std::string>& jobids) = 0;
204 
206 
209  const std::string& GetName() const { return name; }
210 
211  static JobInformationStorageDescriptor AVAILABLE_TYPES[];
212 
213  protected:
214  const std::string name;
215  unsigned nTries;
216  unsigned tryInterval;
220  bool isValid;
225  };
226 
227 } // namespace Arc
228 
229 #endif // __ARC_JOBINFORMATIONSTORAGE_H__