use byte_buffer instead of std::string for binary data