message_ptr_and_header.h 942 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include "message.h"
  3. #include "nondestroying_holder.h"
  4. #include <util/generic/noncopyable.h>
  5. #include <util/generic/utility.h>
  6. namespace NBus {
  7. namespace NPrivate {
  8. struct TBusMessagePtrAndHeader : TNonCopyable {
  9. TNonDestroyingHolder<TBusMessage> MessagePtr;
  10. TBusHeader Header;
  11. ui32 LocalFlags;
  12. TBusMessagePtrAndHeader()
  13. : LocalFlags()
  14. {
  15. }
  16. explicit TBusMessagePtrAndHeader(TBusMessage* messagePtr)
  17. : MessagePtr(messagePtr)
  18. , Header(*MessagePtr->GetHeader())
  19. , LocalFlags(MessagePtr->LocalFlags)
  20. {
  21. }
  22. void Swap(TBusMessagePtrAndHeader& that) {
  23. DoSwap(MessagePtr, that.MessagePtr);
  24. DoSwap(Header, that.Header);
  25. DoSwap(LocalFlags, that.LocalFlags);
  26. }
  27. };
  28. }
  29. }