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__