#pragma once ///////////////////////////////////////////////////////////////////// // Comm.h - message-passing communication facility // // // // Jim Fawcett, CSE687-OnLine Object Oriented Design, Fall 2017 // ///////////////////////////////////////////////////////////////////// #include "../Message/Message.h" #include "../Cpp11-BlockingQueue/Cpp11-BlockingQueue.h" #include "../Sockets/Sockets.h" #include #include using namespace Sockets; namespace MsgPassingCommunication { class Receiver { public: Receiver(EndPoint ep); template void start(CallableObject& co); void stop(); Message getMessage(); BlockingQueue& queue(); private: /*static*/ BlockingQueue rcvQ; SocketListener listener; }; //BlockingQueue Receiver::rcvQ; class Sender { public: ~Sender(); void start(); void stop(); bool connect(EndPoint ep); void postMessage(Message& msg); bool sendFile(const std::string& fileName); private: BlockingQueue sndQ; SocketConnecter connecter; std::thread sendThread; }; }