int32_t SocketWire::Base::read_package()

in src/cpp/RiderLink/Source/RD/src/rd_framework_cpp/src/main/wire/SocketWire.cpp [301:331]


int32_t SocketWire::Base::read_package() const
{
	receive_pkg.rewind();

	const auto pair = read_header();
	if (pair == INVALID_HEADER)
	{
		logger->debug("{}: failed to read header", this->id);
		return -1;
	}
	const auto len = pair.first;
	const auto seqn = pair.second;

	logger->debug("{}: read len={}, seqn={}, max_received_seqn={}", this->id, len, seqn, max_received_seqn);

	receive_pkg.require_available(len);
	if (!read_data_from_socket(receive_pkg.data(), len))
	{
		logger->debug("{}: failed to read package", this->id);
		return -1;
	}
	send_ack(seqn);
	if (seqn <= max_received_seqn && seqn != 1)
	{
		return true;
	}
	max_received_seqn = seqn;

	logger->info("{}: was received package, bytes={}, seqn={}", this->id, len, seqn);
	return len;
}