17 #ifndef AVROBYTEARRAYCONVERTER_HPP_ 
   18 #define AVROBYTEARRAYCONVERTER_HPP_ 
   25 #include <avro/Compiler.hh> 
   26 #include <avro/Specific.hh> 
   27 #include <avro/Stream.hh> 
   28 #include <avro/Encoder.hh> 
   29 #include <avro/Decoder.hh> 
   62     T 
fromByteArray(
const std::uint8_t* data, 
const std::uint32_t& dataSize);
 
   71     void fromByteArray(
const std::uint8_t* data, 
const std::uint32_t& dataSize, T& datum);
 
   86     void toByteArray(
const T& datum, std::vector<std::uint8_t>& dest);
 
   93     void toByteArray(
const T& datum, std::ostream& stream);
 
   99         encoder_ = avro::jsonEncoder(schema);
 
  100         decoder_ = avro::jsonDecoder(schema);
 
  104         encoder_ = avro::binaryEncoder();
 
  105         decoder_ = avro::binaryDecoder();
 
  109     avro::EncoderPtr   encoder_;
 
  110     avro::DecoderPtr   decoder_;
 
  122     if (!data || dataSize == 0) {
 
  127     std::unique_ptr<avro::InputStream> in = avro::memoryInputStream(data, dataSize);
 
  130     avro::decode(*decoder_, datum);
 
  138     if (!data || dataSize == 0) {
 
  142     std::unique_ptr<avro::InputStream> in = avro::memoryInputStream(data, dataSize);
 
  145     avro::decode(*decoder_, datum);
 
  151     std::stringstream ostream;
 
  152     std::unique_ptr<avro::OutputStream> out = avro::ostreamOutputStream(ostream);
 
  154     encoder_->init(*out);
 
  155     avro::encode(*encoder_, datum);
 
  160     std::streampos beg = ostream.tellg();
 
  161     ostream.seekg(0, std::ios_base::end);
 
  163     std::streampos end = ostream.tellg();
 
  164     ostream.seekg(0, std::ios_base::beg);
 
  166     buffer.second = end - beg;
 
  167     buffer.first.reset(
new uint8_t[buffer.second]);
 
  168     std::copy(std::istreambuf_iterator<char>(ostream), std::istreambuf_iterator<char>(), buffer.first.get());
 
  176     std::stringstream ostream;
 
  177     std::unique_ptr<avro::OutputStream> out = avro::ostreamOutputStream(ostream);
 
  179     encoder_->init(*out);
 
  180     avro::encode(*encoder_, datum);
 
  183     std::streampos beg = ostream.tellg();
 
  184     ostream.seekg(0, std::ios_base::end);
 
  186     std::streampos end = ostream.tellg();
 
  187     ostream.seekg(0, std::ios_base::beg);
 
  189     dest.reserve(end - beg);
 
  190     dest.assign(std::istreambuf_iterator<char>(ostream), std::istreambuf_iterator<char>());
 
  196     std::unique_ptr<avro::OutputStream> out = avro::ostreamOutputStream(stream);
 
  198     encoder_->init(*out);
 
  199     avro::encode(*encoder_, datum);
 
void switchToJson(const avro::ValidSchema &schema)
 
SharedDataBuffer toByteArray(const T &datum)
 
T fromByteArray(const std::uint8_t *data, const std::uint32_t &dataSize)
 
std::pair< boost::shared_array< std::uint8_t >, std::uint32_t > SharedDataBuffer