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