/* -*- C++ -*- */ // $Id $ // ============================================================================ // // = LIBRARY // apps/Web // // = FILENAME // Command_Processor.h // // = AUTHOR // Douglas C. Schmidt // // ============================================================================ #ifndef _COMMAND_PROCESSOR_H #define _COMMAND_PROCESSOR_H #include "Command_Processor.h" #include "ace/Containers.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ // Forward decl. class URL; class Command { // = TITLE // Abstract base class for a command. // // = DESCRIPTION // Each command is executed by a . public: virtual ~Command (void); // Virtual destructor. virtual int execute (void) = 0; // This is the entry point to execute the command. }; class URL_Command : public Command { // = TITLE // Defines an API for executing a command on a URL. // // = DESCRIPTION // Each command is executed by a . public: URL_Command (URL *); // Constructor. virtual int execute (void); // Execute the URL command. private: URL *url_; // Pointer to the URL. }; class Command_Processor { // = TITLE // Execute commands that are passed to it. // // = DESCRIPTION // This class implements the Command Processor pattern. public: Command_Processor (void); int insert (Command *); // Insert a new into the 's queue. int execute (void); // Execute all the in the queue. int destroy (void); // Destroy the . private: ~Command_Processor (void); // Ensure dynamic allocation. // @@ You fill in here... }; #endif /* _COMMAND_PROCESSOR_H */