00001 #ifndef __ARC_ENDPOINT_H__
00002 #define __ARC_ENDPOINT_H__
00003
00004 #include <string>
00005 #include <list>
00006 #include <algorithm>
00007
00008 namespace Arc {
00009
00010 class ConfigEndpoint;
00011
00012 class Endpoint {
00013 public:
00014 enum CapabilityEnum { REGISTRY, COMPUTINGINFO, JOBLIST, JOBSUBMIT, JOBMANAGEMENT, ANY };
00015
00016 static std::string GetStringForCapability(Endpoint::CapabilityEnum cap) {
00017 if (cap == Endpoint::REGISTRY) return "information.discovery.registry";
00018 if (cap == Endpoint::COMPUTINGINFO) return "information.discovery.resource";
00019 if (cap == Endpoint::JOBLIST) return "information.discovery.resource";
00020 if (cap == Endpoint::JOBSUBMIT) return "executionmanagement.jobexecution";
00021 if (cap == Endpoint::JOBMANAGEMENT) return "executionmanagement.jobmanager";
00022 return "";
00023 }
00024
00025 Endpoint(const std::string& URLString = "",
00026 const std::list<std::string>& Capability = std::list<std::string>(),
00027 const std::string& InterfaceName = "")
00028 : URLString(URLString), InterfaceName(InterfaceName), Capability(Capability) {}
00029
00030 Endpoint(const std::string& URLString,
00031 const Endpoint::CapabilityEnum cap,
00032 const std::string& InterfaceName = "")
00033 : URLString(URLString), InterfaceName(InterfaceName), Capability(std::list<std::string>(1,GetStringForCapability(cap))) {}
00034
00035
00036
00037 Endpoint(const ConfigEndpoint& e) { *this = e; }
00038
00039 bool HasCapability(Endpoint::CapabilityEnum cap) const;
00040
00041 bool HasCapability(std::string) const;
00042
00043 std::string str() const;
00044
00045
00046 bool operator<(const Endpoint& other) const;
00047
00048 Endpoint& operator=(const ConfigEndpoint& e);
00049
00050 std::string URLString;
00051 std::string InterfaceName;
00052 std::string HealthState;
00053 std::string HealthStateInfo;
00054 std::string QualityLevel;
00055 std::list<std::string> Capability;
00056 std::string RequestedSubmissionInterfaceName;
00057 };
00058
00059 }
00060
00061 #endif // __ARC_ENDPOINT_H__