summaryrefslogtreecommitdiff
path: root/apps/JAWS/server/HTTP_Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'apps/JAWS/server/HTTP_Server.cpp')
-rw-r--r--apps/JAWS/server/HTTP_Server.cpp247
1 files changed, 0 insertions, 247 deletions
diff --git a/apps/JAWS/server/HTTP_Server.cpp b/apps/JAWS/server/HTTP_Server.cpp
deleted file mode 100644
index bc4731ad524..00000000000
--- a/apps/JAWS/server/HTTP_Server.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-// HTTP_Server.cpp
-
-#include "ace/Get_Opt.h"
-#include "ace/Asynch_Acceptor.h"
-#include "ace/Proactor.h"
-
-#include "JAWS/server/IO.h"
-#include "JAWS/server/HTTP_Server.h"
-
-void
-HTTP_Server::parse_args (int argc, char *argv[])
-{
- int c;
- char *prog = argc > 0 ? argv[0] : "Sock_Server";
-
- // Set some defaults
- this->port_ = 0;
- this->threads_ = 0;
-
- ACE_Get_Opt get_opt(argc, argv, "p:n:s:");
- while ((c = get_opt()) != -1)
- switch (c)
- {
- case 'p':
- this->port_ = ACE_OS::atoi(get_opt.optarg);
- break;
- case 'n':
- this->threads_ = ACE_OS::atoi(get_opt.optarg);
- break;
- case 's':
- // 0 -> synch thread pool
- // 1 -> thread per request
- // 2 -> asynch thread pool
- this->strategy_ = ACE_OS::atoi(get_opt.optarg);
- break;
- default:
- break;
- }
-
- if (this->port_ == 0) this->port_ = 5432;
- if (this->threads_ == 0) this->threads_ = 5;
-
- ACE_DEBUG ((LM_DEBUG, "in HTTP_Server::init, %s port = %d, number of threads = %d\n",
- prog, this->port_, this->threads_));
-
-}
-
-int
-HTTP_Server::init (int argc, char *argv[])
-{
-#if !defined (ACE_WIN32)
- sigignore (SIGPIPE);
-#endif
-
- this->parse_args (argc, argv);
-
- if (this->acceptor_.open (ACE_INET_Addr (this->port_), 1) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::open"), -1);
-
- switch (this->strategy_)
- {
- case 2:
- return this->asynch_thread_pool ();
- break;
-
- case 1:
- return this->thread_per_request ();
- break;
-
- case 0:
- default:
- return this->synch_thread_pool ();
- break;
- }
- return 0;
-}
-
-int
-HTTP_Server::fini (void)
-{
- this->tm_.close();
- return 0;
-}
-
-int
-HTTP_Server::synch_thread_pool (void)
-{
- for (int i = 0; i < this->threads_; i++)
- {
- Synch_Thread_Pool_Task *t;
- ACE_NEW_RETURN (t, Synch_Thread_Pool_Task (this->acceptor_, this->tm_), -1);
- if (t->open () != 0)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Thread_Pool_Task::open"), -1);
- }
- this->tm_.wait();
- return 0;
-}
-
-Synch_Thread_Pool_Task::Synch_Thread_Pool_Task (HTTP_Acceptor &acceptor, ACE_Thread_Manager &tm)
- : ACE_Task<ACE_NULL_SYNCH>(&tm), acceptor_(acceptor)
-{
-}
-
-int
-Synch_Thread_Pool_Task::open (void *args)
-{
- if (this->activate () == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Synch_Thread_Pool_Task::open"), -1);
-
- return 0;
-}
-
-int
-Synch_Thread_Pool_Task::svc (void)
-{
- Synch_HTTP_Handler_Factory factory;
- for (;;)
- {
- ACE_SOCK_Stream stream;
- if (this->acceptor_.accept (stream) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::accept"), -1);
- ACE_Message_Block *mb;
- ACE_NEW_RETURN (mb, ACE_Message_Block (HTTP_Handler::MAX_REQUEST_SIZE + 1), -1);
- HTTP_Handler *handler = factory.create_http_handler ();
- handler->open (stream.get_handle (), *mb);
- mb->release ();
- ACE_DEBUG ((LM_DEBUG, "(%t) in Synch_Thread_Pool_Task::svc, recycling\n"));
- }
-
- return 0;
-}
-
-int
-HTTP_Server::thread_per_request (void)
-{
- // thread per request
- for (;;)
- {
- ACE_SOCK_Stream stream;
- if (this->acceptor_.accept (stream) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::accept"), -1);
- Thread_Per_Request_Task *t;
- ACE_NEW_RETURN (t, Thread_Per_Request_Task (stream.get_handle (), this->tm_), -1);
- if (t->open () != 0)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Thread_Per_Request_Task::open"), -1);
- }
- return 0;
-}
-
-Thread_Per_Request_Task::Thread_Per_Request_Task (ACE_HANDLE handle,
- ACE_Thread_Manager &tm)
- : ACE_Task<ACE_NULL_SYNCH>(&tm),
- handle_ (handle)
-{
-}
-
-int
-Thread_Per_Request_Task::open (void *args)
-{
- if (this->activate () == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Thread_Per_Request_Task::open"), -1);
-
- return 0;
-}
-
-int
-Thread_Per_Request_Task::svc (void)
-{
- ACE_Message_Block *mb;
- ACE_NEW_RETURN (mb, ACE_Message_Block (HTTP_Handler::MAX_REQUEST_SIZE + 1), -1);
- Synch_HTTP_Handler_Factory factory;
- HTTP_Handler *handler = factory.create_http_handler ();
- handler->open (this->handle_, *mb);
- mb->release ();
- return 0;
-}
-
-int
-Thread_Per_Request_Task::close (u_long)
-{
- ACE_DEBUG ((LM_DEBUG, "(%t) Thread_Per_Request_Task::svc, dying\n"));
- delete this;
- return 0;
-}
-
-
-int
-HTTP_Server::asynch_thread_pool (void)
-{
-// This only works on Win32
-#if defined (ACE_WIN32)
- ACE_Asynch_Acceptor<Asynch_HTTP_Handler_Factory> acceptor;
- if (acceptor.open (ACE_INET_Addr (this->port_),
- HTTP_Handler::MAX_REQUEST_SIZE + 1) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Asynch_Acceptor::open"), -1);
-
- for (int i = 0; i < this->threads_; i++)
- {
- Asynch_Thread_Pool_Task *t;
- ACE_NEW_RETURN (t, Asynch_Thread_Pool_Task (*ACE_Service_Config::proactor(), this->tm_), -1);
- if (t->open () != 0)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Thread_Pool_Task::open"), -1);
- }
- return this->tm_.wait();
-#endif /* ACE_WIN32 */
- return -1;
-}
-
-// This only works on Win32
-#if defined (ACE_WIN32)
-
-Asynch_Thread_Pool_Task::Asynch_Thread_Pool_Task (ACE_Proactor &proactor, ACE_Thread_Manager &tm)
- : ACE_Task<ACE_NULL_SYNCH> (&tm), proactor_ (proactor)
-{
-}
-
-int
-Asynch_Thread_Pool_Task::open (void *args)
-{
- if (this->activate () == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Asynch_Thread_Pool_Task::open"), -1);
-
- return 0;
-}
-
-int
-Asynch_Thread_Pool_Task::svc (void)
-{
- for (;;)
- {
- if (this->proactor_.handle_events () == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Proactor::handle_events"), -1);
- }
- return 0;
-}
-
-#endif /* ACE_WIN32 */
-
-// Define the factory function.
-ACE_SVC_FACTORY_DEFINE (HTTP_Server)
-
-// Define the object that describes the service.
-ACE_STATIC_SVC_DEFINE (HTTP_Server, "HTTP_Server", ACE_SVC_OBJ_T,
- &ACE_SVC_NAME (HTTP_Server),
- ACE_Service_Type::DELETE_THIS
- | ACE_Service_Type::DELETE_OBJ, 0)
-