#pragma once #include #include #include #include namespace smtp::message { struct Message { std::string subject; std::string text; }; class ThreadSafeQueue { public: ThreadSafeQueue() = default; ~ThreadSafeQueue() = default; void Push( Message const& message ); std::shared_ptr WaitAndPop(); private: mutable std::mutex mMutex; std::queue mMessageQueue; std::condition_variable mCondition; }; }