17 #ifndef AVROBYTEARRAYCONVERTER_HPP_
18 #define AVROBYTEARRAYCONVERTER_HPP_
24 #include <avro/Compiler.hh>
25 #include <avro/Specific.hh>
26 #include <avro/Stream.hh>
27 #include <avro/Encoder.hh>
28 #include <avro/Decoder.hh>
30 #include <boost/cstdint.hpp>
63 T
fromByteArray(
const boost::uint8_t* data,
const boost::uint32_t& dataSize);
72 void fromByteArray(
const boost::uint8_t* data,
const boost::uint32_t& dataSize, T& datum);
86 void toByteArray(
const T& datum, std::ostream& stream);
92 encoder_ = avro::jsonEncoder(schema);
93 decoder_ = avro::jsonDecoder(schema);
97 encoder_ = avro::binaryEncoder();
98 decoder_ = avro::binaryDecoder();
102 avro::EncoderPtr encoder_;
103 avro::DecoderPtr decoder_;
115 if (!data || dataSize == 0) {
120 std::unique_ptr<avro::InputStream> in = avro::memoryInputStream(data, dataSize);
123 avro::decode(*decoder_, datum);
131 if (!data || dataSize == 0) {
135 std::unique_ptr<avro::InputStream> in = avro::memoryInputStream(data, dataSize);
138 avro::decode(*decoder_, datum);
144 std::ostringstream ostream;
145 std::unique_ptr<avro::OutputStream> out = avro::ostreamOutputStream(ostream);
147 encoder_->init(*out);
148 avro::encode(*encoder_, datum);
152 const std::string& encodedData = ostream.str();
153 const size_t encodedDataSize = encodedData.size();
155 buffer.second = encodedDataSize;
156 buffer.first.reset(
new uint8_t[encodedDataSize]);
157 memcpy(buffer.first.get(), encodedData.data(), encodedDataSize);
165 std::unique_ptr<avro::OutputStream> out = avro::ostreamOutputStream(stream);
167 encoder_->init(*out);
168 avro::encode(*encoder_, datum);
void switchToJson(const avro::ValidSchema &schema)
T fromByteArray(const boost::uint8_t *data, const boost::uint32_t &dataSize)
std::pair< boost::shared_array< boost::uint8_t >, boost::uint32_t > SharedDataBuffer
SharedDataBuffer toByteArray(const T &datum)