ARC SDK
EntityRetrieverPlugin.h
Go to the documentation of this file.
1 #ifndef __ARC_ENTITYRETRIEVERPLUGIN_H__
2 #define __ARC_ENTITYRETRIEVERPLUGIN_H__
3 
8 #include <list>
9 #include <map>
10 #include <set>
11 #include <string>
12 
13 #include <arc/UserConfig.h>
14 #include <arc/compute/Endpoint.h>
15 #include <arc/compute/EndpointQueryingStatus.h>
16 #include <arc/compute/ExecutionTarget.h>
17 #include <arc/loader/Loader.h>
18 #include <arc/loader/FinderLoader.h>
19 
20 namespace Arc {
21 
23 template<typename T>
25 public:
27 
32  EndpointQueryOptions(const std::set<std::string>& preferredInterfaceNames = std::set<std::string>()) : preferredInterfaceNames(preferredInterfaceNames) {}
33 
34  const std::set<std::string>& getPreferredInterfaceNames() const { return preferredInterfaceNames; }
35 private:
36  std::set<std::string> preferredInterfaceNames;
37 };
38 
40 template<>
42 public:
44 
53  EndpointQueryOptions(bool recursive = false,
54  const std::list<std::string>& capabilityFilter = std::list<std::string>(),
55  const std::list<std::string>& rejectedServices = std::list<std::string>(),
56  const std::set<std::string>& preferredInterfaceNames = std::set<std::string>() )
57  : recursive(recursive), capabilityFilter(capabilityFilter), rejectedServices(rejectedServices),
58  preferredInterfaceNames(preferredInterfaceNames) {}
59 
60  bool recursiveEnabled() const { return recursive; }
61  const std::list<std::string>& getCapabilityFilter() const { return capabilityFilter; }
62  const std::list<std::string>& getRejectedServices() const { return rejectedServices; }
63  const std::set<std::string>& getPreferredInterfaceNames() const { return preferredInterfaceNames; }
64 
65 private:
66  bool recursive;
67  std::list<std::string> capabilityFilter;
68  std::list<std::string> rejectedServices;
69  std::set<std::string> preferredInterfaceNames;
70 };
71 
76 template<typename T>
77 class EntityRetrieverPlugin : public Plugin {
78 protected:
79  EntityRetrieverPlugin(PluginArgument* parg): Plugin(parg) {};
80 public:
81  virtual const std::list<std::string>& SupportedInterfaces() const { return supportedInterfaces; };
82  virtual bool isEndpointNotSupported(const Endpoint&) const = 0;
83  virtual EndpointQueryingStatus Query(const UserConfig&, const Endpoint& rEndpoint, std::list<T>&, const EndpointQueryOptions<T>& options) const = 0;
84 
85  static const std::string kind;
86 
87 protected:
88  std::list<std::string> supportedInterfaces;
89 };
90 
95 template<typename T>
96 class EntityRetrieverPluginLoader : public Loader {
97 public:
98  EntityRetrieverPluginLoader() : Loader(BaseConfig().MakeConfig(Config()).Parent()) {}
100 
101  EntityRetrieverPlugin<T>* load(const std::string& name);
102  static std::list<std::string> getListOfPlugins();
103  const std::map<std::string, EntityRetrieverPlugin<T> *>& GetTargetInformationRetrieverPlugins() const { return plugins; }
104 
105 protected:
106  std::map<std::string, EntityRetrieverPlugin<T> *> plugins;
107 
108  static Logger logger;
109 };
110 
116 protected:
117  ServiceEndpointRetrieverPlugin(PluginArgument* parg);
118  virtual ~ServiceEndpointRetrieverPlugin() {}
119 };
120 
125 class TargetInformationRetrieverPlugin : public EntityRetrieverPlugin<ComputingServiceType> {
126 protected:
127  TargetInformationRetrieverPlugin(PluginArgument* parg);
129 };
130 
136 protected:
137  JobListRetrieverPlugin(PluginArgument* parg);
138  virtual ~JobListRetrieverPlugin() {}
139 };
140 
146 
152 
158 
159 } // namespace Arc
160 
161 #endif // __ARC_ENTITYRETRIEVERPLUGIN_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
User configuration class
Definition: UserConfig.h:196
Class representing a database query.
Definition: DBInterface.h:54
Represents the status in the EntityRetriever of the query process of an Endpoint (service registry...
Definition: EndpointQueryingStatus.h:19
Configuration for client interface.
Definition: ArcConfig.h:104
EndpointQueryOptions(bool recursive=false, const std::list< std::string > &capabilityFilter=std::list< std::string >(), const std::list< std::string > &rejectedServices=std::list< std::string >(), const std::set< std::string > &preferredInterfaceNames=std::set< std::string >())
Options for recursivity, filtering of capabilities and rejecting services.
Definition: EntityRetrieverPlugin.h:53
Definition: EntityRetrieverPlugin.h:96
A logger class.
Definition: Logger.h:493
Represents an endpoint of a service with a given interface type and capabilities. ...
Definition: Endpoint.h:68
Definition: EntityRetrieverPlugin.h:125
Options controlling the query process.
Definition: EntityRetrieverPlugin.h:24
Configuration element - represents (sub)tree of ARC XML configuration.
Definition: ArcConfig.h:26
Definition: EntityRetrieverPlugin.h:135
Definition: EntityRetrieverPlugin.h:115
EndpointQueryOptions(const std::set< std::string > &preferredInterfaceNames=std::set< std::string >())
Options for querying Endpoint objects.
Definition: EntityRetrieverPlugin.h:32
Definition: EntityRetrieverPlugin.h:77