OpenDDS  Snapshot(2023/04/28-20:55)
TokenWriter.cpp
Go to the documentation of this file.
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 
12 
13 namespace OpenDDS {
14 namespace Security {
15 
17 : binary_property_inserter_(token_ref.binary_properties)
18 , property_inserter_(token_ref.properties)
19 , token_ref_(token_ref)
20 , reader_(token_ref)
21 {
22 
23 }
24 
25 TokenWriter::TokenWriter(DDS::Security::Token& token_ref, const std::string& class_id)
26 : binary_property_inserter_(token_ref.binary_properties)
27 , property_inserter_(token_ref.properties)
28 , token_ref_(token_ref)
29 , reader_(token_ref)
30 {
31  token_ref.class_id = class_id.c_str();
32 }
33 
35 {
36 }
37 
38 void TokenWriter::add_property(const char* prop_name, const char* prop_value, bool propagate)
39 {
41  p.name = prop_name;
42  p.value = prop_value;
43  p.propagate = propagate;
44  *property_inserter_ = p;
45 }
46 
47 void TokenWriter::add_property(const char* prop_name, const DDS::OctetSeq& prop_value, bool propagate)
48 {
49  std::ostringstream out;
50  out.write(reinterpret_cast<const char*>(prop_value.get_buffer()), prop_value.length());
51 
53  p.name = prop_name;
54  p.value = out.str().c_str();
55  p.propagate = propagate;
56  *property_inserter_ = p;
57 }
58 
59 void TokenWriter::add_bin_property(const char* prop_name, const DDS::OctetSeq& prop_value, bool propagate)
60 {
62  p.name = prop_name;
63  p.value = prop_value;
64  p.propagate = propagate;
66 }
67 
68 void TokenWriter::add_bin_property(const char* prop_name, const std::string& prop_value, bool propagate)
69 {
71  p.name = prop_name;
72  p.propagate = propagate;
73  p.value.length(static_cast<unsigned int>(prop_value.size() + 1 /* For null */));
74  std::memcpy(p.value.get_buffer(),
75  prop_value.c_str(),
76  p.value.length());
78 }
79 
80 } // namespace Security
81 } // namespace OpenDDS
82 
DCPS::SequenceBackInsertIterator< DDS::BinaryPropertySeq > binary_property_inserter_
Definition: TokenWriter.h:61
DCPS::SequenceBackInsertIterator< DDS::PropertySeq > property_inserter_
Definition: TokenWriter.h:62
void add_bin_property(const char *prop_name, const DDS::OctetSeq &prop_value, bool propagate=true)
Definition: TokenWriter.cpp:59
OpenDDS::Security::TokenReader reader_
Definition: TokenWriter.h:64
void add_property(const char *prop_name, const char *prop_value, bool propagate=true)
Definition: TokenWriter.cpp:38
sequence< octet > OctetSeq
Definition: DdsDcpsCore.idl:64
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
TokenWriter(DDS::Security::Token &token_ref)
Definition: TokenWriter.cpp:16
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
DDS::Security::Token & token_ref_
Definition: TokenWriter.h:63