seastar::future<Tag> ProtocolV2::read_main_preamble()
{
- return read_exactly(sizeof(preamble_block_t))
+ rx_preamble.clear();
+ return read_exactly(rx_frame_asm.get_preamble_onwire_len())
.then([this] (auto bl) {
rx_segments_data.clear();
try {
- bufferlist preamble;
- preamble.append(buffer::create(std::move(bl)));
+ rx_preamble.append(buffer::create(std::move(bl)));
const Tag tag = rx_frame_asm.disassemble_preamble(rx_preamble);
INTERCEPT_FRAME(tag, bp_type_t::READ);
return tag;
logger().trace("{} RECV({}) frame epilogue", conn, bl.size());
bool ok = false;
try {
- // TODO: v2.1 rx_frame_asm.disassemble_first_segment();
+ rx_frame_asm.disassemble_first_segment(rx_preamble, rx_segments_data[0]);
bufferlist rx_epilogue;
rx_epilogue.append(buffer::create(std::move(bl)));
ok = rx_frame_asm.disassemble_remaining_segments(rx_segments_data.data(), rx_epilogue);
ceph::crypto::onwire::rxtx_t session_stream_handlers;
ceph::msgr::v2::FrameAssembler tx_frame_asm{&session_stream_handlers, false};
ceph::msgr::v2::FrameAssembler rx_frame_asm{&session_stream_handlers, false};
+ ceph::bufferlist rx_preamble;
ceph::msgr::v2::segment_bls_t rx_segments_data;
size_t get_current_msg_size() const;