13 void RegisterSerializer() {
14 constexpr auto messageId = T::MessageId;
15 if (Handlers_.size() <= messageId) {
16 Handlers_.resize(messageId + 1);
18 auto serializeFunc = +[](
TBlob&& blob) {
19 return ::NNet::NActors::SerializeFar<T>(std::move(blob));
21 Handlers_[messageId] = serializeFunc;
24 TBlob SerializeFar(uint32_t messageId,
TBlob blob) {
25 if (messageId >= Handlers_.size() || !Handlers_[messageId]) [[unlikely]] {
26 throw std::runtime_error(
27 std::string(
"No handler for message ID: ") + std::to_string(messageId)
30 return Handlers_[messageId](std::move(blob));