ARC SDK
ComputingServiceRetriever.h
1 #ifndef __ARC_COMPUTINGSERVICERETRIEVER_H__
2 #define __ARC_COMPUTINGSERVICERETRIEVER_H__
3 
4 #include <list>
5 #include <string>
6 
7 #include <arc/UserConfig.h>
8 #include <arc/compute/Endpoint.h>
9 #include <arc/compute/EntityRetriever.h>
10 #include <arc/compute/ExecutionTarget.h>
11 
12 namespace Arc {
13 
18 class ComputingServiceUniq : public EntityConsumer<ComputingServiceType> {
19 public:
20  void addEntity(const ComputingServiceType& service);
21  std::list<ComputingServiceType> getServices() { return services; }
22 private:
23  std::list<ComputingServiceType> services;
24 
25  static Logger logger;
26 };
27 
29 
38 class ComputingServiceRetriever : public EntityContainer<ComputingServiceType>, public EntityConsumer<Endpoint> { // The order of inheritance is important for Swig.
39 public:
41 
57  const UserConfig& uc,
58  const std::list<Endpoint>& services = std::list<Endpoint>(),
59  const std::list<std::string>& rejectedServices = std::list<std::string>(),
60  const std::set<std::string>& preferredInterfaceNames = std::set<std::string>(),
61  const std::list<std::string>& capabilityFilter = std::list<std::string>(1, Endpoint::GetStringForCapability(Arc::Endpoint::COMPUTINGINFO))
62  );
63 
65 
68  void wait() { ser.wait(); tir.wait(); }
69 
71 
77  void addEndpoint(const Endpoint& service);
78 
80 
87  void addEntity(const Endpoint& service) { addEndpoint(service); }
88 
90 
96  void addConsumer(EntityConsumer<ComputingServiceType>& addConsumer_consumer /* The name 'addConsumer_consumer' is important for Swig when matching methods */) { tir.addConsumer(addConsumer_consumer); };
97 
99 
103  void removeConsumer(const EntityConsumer<ComputingServiceType>& removeConsumer_consumer /* The name 'removeConsumer_consumer' is important for Swig when matching methods */) { tir.removeConsumer(removeConsumer_consumer); }
104 
106 
112  void GetExecutionTargets(std::list<ExecutionTarget>& etList) {
113  ExecutionTarget::GetExecutionTargets(*this, etList);
114  }
115 
117 
123  EndpointStatusMap getAllStatuses() const { EndpointStatusMap s = ser.getAllStatuses(), t = tir.getAllStatuses(); s.insert(t.begin(), t.end()); return s; }
124 
125 private:
128 
129  static Logger logger;
130 };
131 
132 } // namespace Arc
133 
134 #endif // __ARC_COMPUTINGSERVICERETRIEVER_H__