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;
}
}