Make packet boundary assertion less costly
mxs::Buffer::iterator is not a random-access iterator and hence will have linear cost. This is too costly to do on every packet with even moderately sized resultsets.
This commit is contained in:
parent
d8cbdae83d
commit
88dae197b0
@ -284,6 +284,8 @@ void RWBackend::process_packets(GWBUF* result)
|
||||
{
|
||||
mxs::Buffer buffer(result);
|
||||
auto it = buffer.begin();
|
||||
MXB_AT_DEBUG(size_t total_len = buffer.length());
|
||||
MXB_AT_DEBUG(size_t used_len = 0);
|
||||
|
||||
while (it != buffer.end())
|
||||
{
|
||||
@ -293,7 +295,8 @@ void RWBackend::process_packets(GWBUF* result)
|
||||
len |= (*it++) << 16;
|
||||
++it; // Skip the sequence
|
||||
mxb_assert(it != buffer.end());
|
||||
mxb_assert(std::distance(it, buffer.end()) >= len);
|
||||
mxb_assert(used_len + len < total_len);
|
||||
MXB_AT_DEBUG(used_len += len);
|
||||
auto end = it;
|
||||
end.advance(len);
|
||||
uint8_t cmd = *it;
|
||||
|
Loading…
x
Reference in New Issue
Block a user