summaryrefslogtreecommitdiff
path: root/ACE/examples/Web_Crawler/Command_Processor.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/Web_Crawler/Command_Processor.h')
-rw-r--r--ACE/examples/Web_Crawler/Command_Processor.h98
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 */