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__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
void addConsumer(EntityConsumer< T > &addConsumer_consumer)
Definition: EntityRetriever.h:192
User configuration class
Definition: UserConfig.h:196
Definition: ComputingServiceRetriever.h:18
void wait()
Waits for all the results to arrive.
Definition: ComputingServiceRetriever.h:68
Retrieves information about computing elements by querying service registries and CE information syst...
Definition: ComputingServiceRetriever.h:38
void addEndpoint(const Endpoint &service)
Adds a new service (registry or computing element) to query.
A logger class.
Definition: Logger.h:493
void removeConsumer(const EntityConsumer< T > &removeConsumer_consumer)
Represents an endpoint of a service with a given interface type and capabilities. ...
Definition: Endpoint.h:68
void addConsumer(EntityConsumer< ComputingServiceType > &addConsumer_consumer)
Add a consumer to the ComputingServiceRetriever which will get the results.
Definition: ComputingServiceRetriever.h:96
void GetExecutionTargets(std::list< ExecutionTarget > &etList)
Convenience method to generate ExectionTarget objects from the resulted ComputingServiceType objects...
Definition: ComputingServiceRetriever.h:112
static std::string GetStringForCapability(Endpoint::CapabilityEnum cap)
Get string representation of CapabilityEnum.
Definition: Endpoint.h:96
EndpointStatusMap getAllStatuses() const
Get status of all the queried Endpoint objects.
Definition: EntityRetriever.h:213
EndpointStatusMap getAllStatuses() const
Get status of all the queried Endpoint objects.
Definition: ComputingServiceRetriever.h:123
void wait() const
Definition: EntityRetriever.h:179
void addEntity(const ComputingServiceType &service)
Send an entity to this consumer.
An entity consumer class storing all the consumed entities in a list.
Definition: EntityRetriever.h:59
void removeConsumer(const EntityConsumer< ComputingServiceType > &removeConsumer_consumer)
Remove a previously added consumer from this ComputingServiceRetriever.
Definition: ComputingServiceRetriever.h:103
Definition: ExecutionTarget.h:460
Status map for Endpoint objects.
Definition: Endpoint.h:38
void addEntity(const Endpoint &service)
Adds a new service to query (used by the internal ServiceEndpointRetriever)
Definition: ComputingServiceRetriever.h:87
ComputingServiceRetriever(const UserConfig &uc, const std::list< Endpoint > &services=std::list< Endpoint >(), const std::list< std::string > &rejectedServices=std::list< std::string >(), const std::set< std::string > &preferredInterfaceNames=std::set< std::string >(), const std::list< std::string > &capabilityFilter=std::list< std::string >(1, Endpoint::GetStringForCapability(Arc::Endpoint::COMPUTINGINFO)))
Creates a ComputingServiceRetriever with a list of services to query.
A general concept of an object which can consume entities use by the retrievers to return results...
Definition: EntityRetriever.h:34
Local information system of a computing element capable of returning information about the resource...
Definition: Endpoint.h:75