// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include "messagesender.h" #include #include #include namespace storage { class MessageGuard { std::vector> messagesUp; std::vector> messagesDown; std::unique_lock _lock; ChainedMessageSender& _messageSender; public: MessageGuard(std::mutex& lock, ChainedMessageSender& messageSender) : _lock(lock), _messageSender(messageSender) {} ~MessageGuard(); void send(const std::shared_ptr& message) { sendUp(message); } void sendUp(const std::shared_ptr& message) { messagesUp.push_back(message); } void sendDown(const std::shared_ptr& message) { messagesDown.push_back(message); } }; }