From c28e263fdf7db735972b528b44fd51b3f2727843 Mon Sep 17 00:00:00 2001 From: kirthika Date: Mon, 3 May 1999 20:09:06 +0000 Subject: part of HTTP_1.1_Client example --- examples/Web_Crawler/Command_Processor.cpp | 139 +++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 examples/Web_Crawler/Command_Processor.cpp (limited to 'examples/Web_Crawler/Command_Processor.cpp') diff --git a/examples/Web_Crawler/Command_Processor.cpp b/examples/Web_Crawler/Command_Processor.cpp new file mode 100644 index 00000000000..cb22a1b14c7 --- /dev/null +++ b/examples/Web_Crawler/Command_Processor.cpp @@ -0,0 +1,139 @@ + // $Id$ + +#include "URL.h" +#include "HTTP_URL.h" +#include "Options.h" +#include "Command_Processor.h" +#include "URL_Visitor.h" + +ACE_RCSID(HTTP_1.1_Client, Command_Processor, "$Id$") + +Command::~Command (void) +{ +} + +URL_Command::URL_Command (URL *url) + : url_ (url) +{ +} + +int +URL_Command::execute (void) +{ + + ACE_CString check_string (this->url_->url_addr ().get_path_name ()); + if (check_string.find ("news:") >= 0) + return 0; + + if (check_string.find (".cgi") >= 0) + return 0; + + if (check_string.find ("mailto") >= 0) + return 0; + + if (check_string.find (".gif") >= 0) + return 0; + + if (check_string.find (".pdf") >= 0) + return 0; + + if (check_string.find (".map") >= 0) + return 0; + + if (check_string.find (".bmp") >= 0) + return 0; + + if (check_string.find (".jpg") >= 0) + return 0; + + if (this->url_->accept (OPTIONS::instance ()->visitor ()) !=0) + { + ACE_DEBUG ((LM_DEBUG, + "Coudnt accept url\n")); + return -1; + } + return 0; +} + +int +URL_Command::destroy (void) +{ + delete this; + return 0; +} +Command_Processor::Command_Processor (void) +{ +} + +Command_Processor::~Command_Processor (void) +{ +} + +int +Command_Processor::destroy (void) +{ + delete this; + return 0; +return 0; +} + +int +Command_Processor::execute (void) +{ + Command *command; + while (this->url_queue_.is_empty () != 1) + { + if (this->url_queue_.dequeue_head (command) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + "%p\n", "dequeue_head"), + -1); + URL_Command *url_command = ACE_dynamic_cast (URL_Command *, + command); + Auto_Destroyer url_command_ptr (url_command); + if (url_command_ptr->execute () != 0) + { + ACE_DEBUG ((LM_DEBUG, + "Couldnt execute command")); + return -1; + } + } + return 0; +} + +int +Command_Processor::insert (Command *command) +{ + // According to the order specified the commands are removed from the queue. + if (this->url_queue_.is_full() != 1) + { + if (ACE_OS::strcmp (OPTIONS::instance ()->order (),"FIFO") == 0) + { + if (this->url_queue_.enqueue_tail (command) !=0) + ACE_ERROR_RETURN ((LM_ERROR, + "%p\n", "enqueue_tail"), + - 1); + } + if (ACE_OS::strcmp (OPTIONS::instance ()->order (),"LIFO") == 0) + { + if (this->url_queue_.enqueue_head (command) !=0) + ACE_ERROR_RETURN ((LM_ERROR, + "%p\n", "enqueue_head"), + - 1); + } + } + return 0; +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class ACE_Singleton; +template class ACE_Unbounded_Queue; +template class ACE_Node; +template class ACE_Unbounded_Queue_Iterator; +template class ACE_Unbounded_Queue; +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate ACE_Singleton +#pragma instantiate ACE_Unbounded_Queue +#pragma instantiate ACE_Node +#pragma instantiate ACE_Unbounded_Queue_Iterator +#pragma instantiate ACE_Unbounded_Queue +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ -- cgit v1.2.1