#include "event.h" #include "event_pb.h" namespace NActors { const TScopeId TScopeId::LocallyGenerated{ Max(), Max() }; TString IEventHandle::GetTypeName() const { return HasEvent() ? TypeName(*(const_cast(this)->GetBase())) : TypeName(*this); } TString IEventHandle::ToString() const { return HasEvent() ? const_cast(this)->GetBase()->ToString().data() : "serialized?"; } std::unique_ptr IEventHandle::Forward(std::unique_ptr&& ev, TActorId recipient) { return std::unique_ptr(ev->Forward(recipient).Release()); } TIntrusivePtr IEventHandle::ReleaseChainBuffer() { if (Buffer) { TIntrusivePtr result; DoSwap(result, Buffer); Event.Reset(); return result; } if (Event) { TAllocChunkSerializer serializer; Event->SerializeToArcadiaStream(&serializer); auto chainBuf = serializer.Release(Event->CreateSerializationInfo()); Event.Reset(); return chainBuf; } return new TEventSerializedData; } TIntrusivePtr IEventHandle::GetChainBuffer() { if (Buffer) { return Buffer; } if (Event) { TAllocChunkSerializer serializer; Event->SerializeToArcadiaStream(&serializer); Buffer = serializer.Release(Event->CreateSerializationInfo()); return Buffer; } return new TEventSerializedData; } }