1 #ifndef __ARC_ENTITYRETRIEVER_H__
2 #define __ARC_ENTITYRETRIEVER_H__
8 #include <arc/ArcConfig.h>
9 #include <arc/compute/Endpoint.h>
10 #include <arc/UserConfig.h>
11 #include <arc/Utils.h>
12 #include <arc/compute/EndpointQueryingStatus.h>
13 #include <arc/compute/ExecutionTarget.h>
14 #include <arc/compute/EntityRetrieverPlugin.h>
20 class SimpleCondition;
22 template<>
class ThreadedPointer<class Endpoint>;
67 virtual void addEntity(
const T& t) { this->push_back(t); }
180 void wait()
const { result.wait(); };
187 bool isDone()
const {
return result.wait(0); };
252 bool removeEndpoint(
const Endpoint& e) { statusLock.
lock(); EndpointStatusMap::iterator it = statuses.find(e);
if (it != statuses.end()) { statuses.erase(it); statusLock.
unlock();
return true; }; statusLock.
unlock();
return false; }
288 static void queryEndpoint(
void *arg_);
290 void checkSuspendedAndStart(
const Endpoint& e);
296 mutex(), t(t), uc(u) {};
297 void deactivate(
void) {
302 bool lockExclusiveIfValid(
void) {
309 bool lockSharedIfValid(
void) {
317 operator const UserConfig&(void)
const {
return uc; }
318 const std::list<std::string>& getAvailablePlugins(
void)
const {
return availablePlugins; }
319 void setAvailablePlugins(
const std::list<std::string>& newAvailablePlugins) { availablePlugins = newAvailablePlugins; }
326 std::list<std::string> availablePlugins;
338 Result(
bool one_success =
false):
340 success(
false),need_one_success(one_success) { };
344 success(
false),need_one_success(r.need_one_success) {
349 if(need_one_success && success) {
356 void setSuccess(
void) { success =
true; };
358 bool wait(
int t = -1)
const {
return Ptr()->
wait(t); };
361 bool need_one_success;
368 ThreadArg(
const ThreadArg& v,
Result& result) : common(v.common), result(result), endpoint(v.endpoint), pluginName(v.pluginName), options(options) {};
374 std::string pluginName;
382 std::list< EntityConsumer<T>* > consumers;
387 std::map<std::string, std::string> interfacePluginMap;
388 bool need_all_results;
420 #endif // __ARC_ENTITYRETRIEVER_H__