00001 /* 00002 * Distributed under the OpenDDS License. 00003 * See: http://www.OpenDDS.org/license.html 00004 */ 00005 00006 #ifndef OPENDDS_ACCESS_GOVERNANCE_H 00007 #define OPENDDS_ACCESS_GOVERNANCE_H 00008 00009 #include "dds/DCPS/security/SSL/SignedDocument.h" 00010 #include "dds/DdsSecurityCoreC.h" 00011 #include "dds/DCPS/RcObject.h" 00012 #include <string> 00013 #include <vector> 00014 #include <set> 00015 00016 namespace OpenDDS { 00017 namespace Security { 00018 00019 class Governance : public DCPS::RcObject { 00020 public: 00021 00022 typedef DCPS::RcHandle<Governance> shared_ptr; 00023 00024 struct TopicAccessRule { 00025 std::string topic_expression; 00026 DDS::Security::TopicSecurityAttributes topic_attrs; 00027 std::string metadata_protection_kind; 00028 std::string data_protection_kind; 00029 }; 00030 00031 typedef std::vector<TopicAccessRule> TopicAccessRules; 00032 00033 struct DomainRule { 00034 std::set<DDS::Security::DomainId_t> domain_list; 00035 DDS::Security::ParticipantSecurityAttributes domain_attrs; 00036 TopicAccessRules topic_rules; 00037 }; 00038 00039 typedef std::vector<DomainRule> GovernanceAccessRules; 00040 00041 Governance(); 00042 00043 int load(const SSL::SignedDocument& doc); 00044 00045 GovernanceAccessRules& access_rules() 00046 { 00047 return access_rules_; 00048 } 00049 00050 private: 00051 00052 GovernanceAccessRules access_rules_; 00053 00054 }; 00055 00056 } 00057 } 00058 00059 #endif