diff options
Diffstat (limited to 'ACE/examples/Web_Crawler/Command_Processor.h')
-rw-r--r-- | ACE/examples/Web_Crawler/Command_Processor.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/ACE/examples/Web_Crawler/Command_Processor.h b/ACE/examples/Web_Crawler/Command_Processor.h new file mode 100644 index 00000000000..742a316804c --- /dev/null +++ b/ACE/examples/Web_Crawler/Command_Processor.h @@ -0,0 +1,98 @@ +/* -*- C++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// examples/Web_Crawler +// +// = FILENAME +// Command_Processor.h +// +// = AUTHOR +// Douglas C. Schmidt <schmidt@cs.wustl.edu> +// +// ============================================================================ + +#ifndef _COMMAND_PROCESSOR_H +#define _COMMAND_PROCESSOR_H + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Containers.h" +#include "Options.h" + +// Forward decl. +class URL; + +class Command +{ + // = TITLE + // Abstract base class for a command. + // + // = DESCRIPTION + // Each command is executed by a <Command_Processor>. +public: + virtual ~Command (void); + // Virtual destructor. + + virtual int execute (void) = 0; + // This is the entry point to execute the command. + virtual int destroy (void) = 0; +}; + +class URL_Command : public Command +{ + // = TITLE + // Defines an API for executing a command on a URL. + // + // = DESCRIPTION + // Each command is executed by a <Command_Processor>. +public: + URL_Command (URL *); + // Constructor. + + virtual int execute (void); + // Execute the URL command. + + int destroy (void); + // Commit suicide. +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 <Command> into the <Command_Processor>'s queue. + + int execute (void); + // Execute all the <Commands> in the queue. + + int destroy (void); + // Destroy the <Command_Processor>. + +private: + friend class ACE_Shutup_GPlusPlus; + // Turn off g++ warning + + ~Command_Processor (void); + // Ensure dynamic allocation. + + // @@ You fill in here... + ACE_Unbounded_Queue<Command *> url_queue_; +}; + + +#endif /* _COMMAND_PROCESSOR_H */ |