ARC SDK
DTRList.h
1 #ifndef DTRLIST_H_
2 #define DTRLIST_H_
3 
4 #include <arc/Thread.h>
5 
6 #include "DTR.h"
7 
8 namespace DataStaging {
9 
11 
17  class DTRList {
18 
19  private:
20 
22  std::list<DTR_ptr> DTRs;
23 
26 
28  std::set<std::string> CachingSources;
29 
31  Arc::SimpleCondition CachingLock;
32 
33  public:
34 
36  bool add_dtr(DTR_ptr DTRToAdd);
37 
39  bool delete_dtr(DTR_ptr DTRToDelete);
40 
42 
46  bool filter_dtrs_by_owner(StagingProcesses OwnerToFilter, std::list<DTR_ptr>& FilteredList);
47 
49  int number_of_dtrs_by_owner(StagingProcesses OwnerToFilter);
50 
52 
59  bool filter_dtrs_by_status(DTRStatus::DTRStatusType StatusToFilter, std::list<DTR_ptr>& FilteredList);
60 
62 
66  bool filter_dtrs_by_statuses(const std::vector<DTRStatus::DTRStatusType>& StatusesToFilter,
67  std::list<DTR_ptr>& FilteredList);
68 
70 
75  bool filter_dtrs_by_statuses(const std::vector<DTRStatus::DTRStatusType>& StatusesToFilter,
76  std::map<DTRStatus::DTRStatusType, std::list<DTR_ptr> >& FilteredList);
77 
79 
85  bool filter_dtrs_by_next_receiver(StagingProcesses NextReceiver, std::list<DTR_ptr>& FilteredList);
86 
88 
93  bool filter_pending_dtrs(std::list<DTR_ptr>& FilteredList);
94 
96 
100  bool filter_dtrs_by_job(const std::string& jobid, std::list<DTR_ptr>& FilteredList);
101 
103  void caching_started(DTR_ptr request);
104 
106  void caching_finished(DTR_ptr request);
107 
109  bool is_being_cached(DTR_ptr DTRToCheck);
110 
112  bool empty();
113 
115  std::list<std::string> all_jobs();
116 
118 
122  void dumpState(const std::string& path);
123 
124  };
125 
126 } // namespace DataStaging
127 
128 #endif /*DTRLIST_H_*/