Line data Source code
1 : /* 2 : * 3 : * 4 : * Distributed under the OpenDDS License. 5 : * See: http://www.OpenDDS.org/license.html 6 : */ 7 : #include "TokenWriter.h" 8 : #include <cstring> 9 : #include <sstream> 10 : 11 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 12 : 13 : namespace OpenDDS { 14 : namespace Security { 15 : 16 55 : TokenWriter::TokenWriter(DDS::Security::Token& token_ref) 17 55 : : binary_property_inserter_(token_ref.binary_properties) 18 55 : , property_inserter_(token_ref.properties) 19 55 : , token_ref_(token_ref) 20 110 : , reader_(token_ref) 21 : { 22 : 23 55 : } 24 : 25 102 : TokenWriter::TokenWriter(DDS::Security::Token& token_ref, const std::string& class_id) 26 102 : : binary_property_inserter_(token_ref.binary_properties) 27 102 : , property_inserter_(token_ref.properties) 28 102 : , token_ref_(token_ref) 29 204 : , reader_(token_ref) 30 : { 31 102 : token_ref.class_id = class_id.c_str(); 32 102 : } 33 : 34 157 : TokenWriter::~TokenWriter() 35 : { 36 157 : } 37 : 38 139 : void TokenWriter::add_property(const char* prop_name, const char* prop_value, bool propagate) 39 : { 40 139 : DDS::Property_t p; 41 139 : p.name = prop_name; 42 139 : p.value = prop_value; 43 139 : p.propagate = propagate; 44 139 : *property_inserter_ = p; 45 139 : } 46 : 47 22 : void TokenWriter::add_property(const char* prop_name, const DDS::OctetSeq& prop_value, bool propagate) 48 : { 49 22 : std::ostringstream out; 50 22 : out.write(reinterpret_cast<const char*>(prop_value.get_buffer()), prop_value.length()); 51 : 52 22 : DDS::Property_t p; 53 22 : p.name = prop_name; 54 22 : p.value = out.str().c_str(); 55 22 : p.propagate = propagate; 56 22 : *property_inserter_ = p; 57 22 : } 58 : 59 115 : void TokenWriter::add_bin_property(const char* prop_name, const DDS::OctetSeq& prop_value, bool propagate) 60 : { 61 115 : DDS::BinaryProperty_t p; 62 115 : p.name = prop_name; 63 115 : p.value = prop_value; 64 115 : p.propagate = propagate; 65 115 : *binary_property_inserter_ = p; 66 115 : } 67 : 68 28 : void TokenWriter::add_bin_property(const char* prop_name, const std::string& prop_value, bool propagate) 69 : { 70 28 : DDS::BinaryProperty_t p; 71 28 : p.name = prop_name; 72 28 : p.propagate = propagate; 73 28 : p.value.length(static_cast<unsigned int>(prop_value.size() + 1 /* For null */)); 74 28 : std::memcpy(p.value.get_buffer(), 75 28 : prop_value.c_str(), 76 28 : p.value.length()); 77 28 : *binary_property_inserter_ = p; 78 28 : } 79 : 80 : } // namespace Security 81 : } // namespace OpenDDS 82 : 83 : OPENDDS_END_VERSIONED_NAMESPACE_DECL