void on_wire_received()

in src/cpp/RiderLink/Source/RD/src/rd_framework_cpp/src/main/impl/RdList.h [122:165]


	void on_wire_received(Buffer buffer) const override
	{
		int64_t header = (buffer.read_integral<int64_t>());
		int64_t version = header >> versionedFlagShift;
		Op op = static_cast<Op>((header & ((1 << versionedFlagShift) - 1L)));
		int32_t index = (buffer.read_integral<int32_t>());

		RD_ASSERT_MSG(version == next_version,
			("Version conflict for " + to_string(location) + "}. Expected version " + std::to_string(next_version) + ", received " +
				std::to_string(version) + ". Are you modifying a list from two sides?"));

		next_version++;

		switch (op)
		{
			case Op::ADD:
			{
				auto value = S::read(this->get_serialization_context(), buffer);

				spdlog::get("logReceived")->trace(logmsg(op, version, index, &(wrapper::get<T>(value))));

				(index < 0) ? list::add(std::move(value)) : list::add(static_cast<size_t>(index), std::move(value));
				break;
			}
			case Op::UPDATE:
			{
				auto value = S::read(this->get_serialization_context(), buffer);

				spdlog::get("logReceived")->trace(logmsg(op, version, index, &(wrapper::get<T>(value))));

				list::set(static_cast<size_t>(index), std::move(value));
				break;
			}
			case Op::REMOVE:
			{
				spdlog::get("logReceived")->trace(logmsg(op, version, index));

				list::removeAt(static_cast<size_t>(index));
				break;
			}
			case Op::ACK:
				break;
		}
	}