//  // // ##### #### # # -= Threadux =-  // //  # # # ## ## Intercaller.h  // //  # # # ##  // //  # # # ### Peforms inter-thread function and method calling  // //  # # # ## ##  // //  # #### # # R1 2004 by Markus Ewald  // //  // #ifndef THREADUX_INTERCALLER_H #define THREADUX_INTERCALLER_H #include "Threadux/Threadux.h" #include "Threadux/Invocation.h" #include namespace Threadux { //  // //  Threadux::Intercaller  // //  // class Intercaller { public: /// Constructor Intercaller() {} /// Destructor virtual ~Intercaller() {} // // Intercaller implementation // public: /// Queue invocation for receiving thread virtual void enqueue(const Invocation &TheInvocation) = 0; private: Intercaller(const Intercaller &); void operator =(const Intercaller &); }; //  // //  Threadux::IntercallServer  // //  // /// Inter-Thread caller /** Performs calls within another thread */ class IntercallServer : public Intercaller { public: /// Constructor IntercallServer() {} /// Destructor virtual ~IntercallServer() {} // // IntercallServer implementation // public: /// Execute queued invocations in calling thread void flush(); /// Discard all queued invocations void purge(); // // Intercaller implementation // public: /// Queue invocation for receiving thread void enqueue(const Invocation &TheInvocation); private: /// Queue of invocations typedef std::deque InvocationDeque; IntercallServer(const IntercallServer &); void operator =(const IntercallServer &); /// Invocations queued for this intercall server InvocationDeque m_QueuedInvocations; }; } // namespace Threadux; #endif // THREADUX_INTERCALLER_H