00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_SECURITY_PROVIDER_H_
00019 #define _DECAF_SECURITY_PROVIDER_H_
00020
00021 #include <decaf/util/Config.h>
00022 #include <decaf/util/Set.h>
00023
00024 #include <string>
00025
00026 #include <decaf/security/ProviderService.h>
00027
00028 namespace decaf {
00029 namespace security {
00030
00031 class ProviderImpl;
00032
00046 class DECAF_API Provider {
00047 private:
00048
00049 std::string name;
00050 double version;
00051 std::string info;
00052
00053 ProviderImpl* impl;
00054
00055 private:
00056
00057 Provider(const Provider&);
00058 Provider& operator= (const Provider&);
00059
00060 protected:
00061
00062 Provider(const std::string& name, double version, const std::string& info);
00063
00064 public:
00065
00066 virtual ~Provider();
00067
00068 public:
00069
00070 std::string getName() const {
00071 return name;
00072 }
00073
00074 double getVersion() const {
00075 return version;
00076 }
00077
00078 std::string getInfo() const {
00079 return info;
00080 }
00081
00082 const decaf::util::Set<ProviderService*>& getServices() const;
00083
00084 protected:
00085
00086 virtual void initialize() {}
00087
00088 void addService(ProviderService* service);
00089
00090 };
00091
00092 }}
00093
00094 #endif