diff options
author | jxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-24 04:52:23 +0000 |
---|---|---|
committer | jxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-24 04:52:23 +0000 |
commit | 6a0480358b46379cadd77498043c3ad69f57cb8e (patch) | |
tree | 584b9da10ddc4dcefdc835cec7230b4b26a4238c /apps/JAWS | |
parent | b6f15ee8983f3d57f2d0d5d6eeaa870b2b40dca5 (diff) | |
download | ATCD-6a0480358b46379cadd77498043c3ad69f57cb8e.tar.gz |
More tweaking of the framework for the sample app.
Diffstat (limited to 'apps/JAWS')
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.cpp | 9 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h | 17 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp | 14 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h | 9 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp | 26 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h | 21 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp | 52 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Policy.h | 41 | ||||
-rw-r--r-- | apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp | 11 |
9 files changed, 124 insertions, 76 deletions
diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.cpp b/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.cpp index 7f0cbe0f850..1b46d54929e 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.cpp +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.cpp @@ -2,6 +2,7 @@ #include "JAWS/Concurrency.h" #include "JAWS/Pipeline.h" +#include "JAWS/Policy.h" #include "JAWS/Data_Block.h" JAWS_Concurrency_Base::JAWS_Concurrency_Base (void) @@ -57,14 +58,6 @@ JAWS_Concurrency_Base::svc (void) return 0; } -JAWS_Dispatch_Policy::JAWS_Dispatch_Policy (void) -{ -} - -JAWS_Dispatch_Policy::~JAWS_Dispatch_Policy (void) -{ -} - JAWS_Dispatcher::JAWS_Dispatcher (void) : policy_(0) { diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h b/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h index 92e7cab32a0..50c8e3f8e28 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h @@ -10,6 +10,8 @@ #include "JAWS/IO.h" +class JAWS_Dispatch_Policy; + class JAWS_Concurrency_Base : public ACE_Task<ACE_MT_SYNCH> // = TITLE // Base class for different concurrency models @@ -27,21 +29,6 @@ public: virtual int svc (void); }; -class JAWS_Dispatch_Policy - // = TITLE - // Policy mechanism for choosing different concurrency models. - // - // = DESCRIPTION - // Given some (unspecified) state, decides what the concurrency - // model should be. (For now, we always return the same model.) -{ -public: - JAWS_Dispatch_Policy (void); - virtual ~JAWS_Dispatch_Policy (void); - virtual JAWS_Concurrency_Base * concurrency (void) = 0; - virtual JAWS_IO * io (void) = 0; -}; - class JAWS_Dispatcher // = TITLE // The class that is responsible to delivering events to the diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp b/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp index dc982a11978..3e190b0ec4f 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp @@ -9,12 +9,6 @@ JAWS_Data_Block::task (void) return this->task_; } -ACE_INET_Addr * -JAWS_Data_Block::addr (void) -{ - return this->addr_; -} - JAWS_IO_Handler * JAWS_Data_Block::handler (void) { @@ -34,12 +28,6 @@ JAWS_Data_Block::task (JAWS_Pipeline_Handler *taskp) } void -JAWS_Data_Block::addr (ACE_INET_Addr *addrp) -{ - this->addr_ = addrp; -} - -void JAWS_Data_Block::handler (JAWS_IO_Handler *handlerp) { this->handler_ = handlerp; @@ -62,7 +50,7 @@ JAWS_Pipeline_Accept_Task::handle_put (JAWS_Data_Block *data, // data->policy ()->update (handler); JAWS_IO *io = policy->io (); - io->accept (data->addr ()); + // io->accept (data->addr ()); return 0; } diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h b/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h index 6763233401f..d9ba54761fa 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h @@ -20,13 +20,11 @@ class JAWS_Data_Block : public ACE_Data_Block // Defines the communication unit between pipeline components { public: - JAWS_Pipeline_Task *task (void); - ACE_INET_Addr *addr (void); - JAWS_IO_Handler * handler (void); - JAWS_Dispatch_Policy * policy (void); + JAWS_Pipeline_Handler *task (void); + JAWS_IO_Handler *handler (void); + JAWS_Dispatch_Policy *policy (void); void task (JAWS_Pipeline_Handler *taskp); - void addr (ACE_INET_Addr *addrp); void handler (JAWS_IO_Handler * handlerp); void policy (JAWS_Dispatch_Policy * policyp); @@ -34,7 +32,6 @@ private: JAWS_IO_Handler *handler_; JAWS_Dispatch_Policy *policy_; JAWS_Pipeline_Handler *task_; - ACE_INET_Addr *addr_; }; class JAWS_Pipeline_Accept_Task : public JAWS_Pipeline_Handler diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp b/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp index baace4f598a..ac7c9a5e1f5 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp +++ b/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp @@ -8,21 +8,19 @@ JAWS_IO_Handler_Factory::~JAWS_IO_Handler_Factory (void) { } -JAWS_Synch_IO_Handler::JAWS_Synch_IO_Handler (JAWS_IO *io, - JAWS_IO_Handler_Factory *factory) - : state_ (0), - io_ (io), - pipeline_ (0), +JAWS_Synch_IO_Handler::JAWS_Synch_IO_Handler (JAWS_IO_Handler_Factory *factory) + : mb_ (0), + task_ (0), factory_ (factory) { - this->io_->handler (this); + // this->io_->handler (this); } JAWS_Synch_IO_Handler::~JAWS_Synch_IO_Handler (void) { - if (this->state_) - this->state_->release (); - this->state_ = 0; + if (this->mb_) + this->mb_->release (); + this->mb_ = 0; } void @@ -102,7 +100,7 @@ JAWS_Synch_IO_Handler::factory (void) void JAWS_Synch_IO_Handler::done (void) { - this->factory ()->destroy_io_handler (this, this->io_); + this->factory ()->destroy_io_handler (this); } JAWS_IO_Handler * @@ -114,16 +112,14 @@ JAWS_Synch_IO_Handler_Factory::create_io_handler (void) io = new JAWS_Synch_IO; if (io == 0) return 0; - handler = new JAWS_Synch_IO_Handler (io, this); - if (handler == 0) destroy_io_handler (0, io); + handler = new JAWS_Synch_IO_Handler (this); + if (handler == 0) delete io; return handler; } void -JAWS_Synch_IO_Handler_Factory::destroy_io_handler (JAWS_IO_Handler *handler, - JAWS_IO *io) +JAWS_Synch_IO_Handler_Factory::destroy_io_handler (JAWS_IO_Handler *handler) { delete handler; - delete io; } diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h b/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h index 3c2d3256607..3a3dc3a1e35 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h +++ b/apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h @@ -30,7 +30,11 @@ class JAWS_Asynch_IO_Handler; class JAWS_IO_Handler_Factory; class JAWS_Synch_IO_Handler_Factory; class JAWS_Asynch_IO_Handler_Factory; -class JAWS_Pipeline; +class JAWS_Data_Block; + +template <class TYPE> class JAWS_Pipeline_Abstract_Handler; +typedef JAWS_Pipeline_Abstract_Handler<JAWS_Data_Block> + JAWS_Pipeline_Handler; class JAWS_IO_Handler // = TITLE @@ -111,7 +115,7 @@ public: virtual JAWS_IO_Handler *create_io_handler (void) = 0; // This creates a new HTTP_Handler - virtual void destroy_io_handler (JAWS_IO_Handler *handler, JAWS_IO *io) = 0; + virtual void destroy_io_handler (JAWS_IO_Handler *handler) = 0; // The HTTP handler will call this method from HTTP_Handler::done to // tell the factory to reap up the handler as it is now done with // the protocol @@ -123,7 +127,7 @@ friend class JAWS_Synch_IO; friend class JAWS_Synch_IO_Handler_Factory; public: - JAWS_Synch_IO_Handler (JAWS_IO *io, JAWS_IO_Handler_Factory *factory); + JAWS_Synch_IO_Handler (JAWS_IO_Handler_Factory *factory); virtual ~JAWS_Synch_IO_Handler (void); protected: @@ -145,13 +149,10 @@ protected: virtual void done (void); private: - ACE_Message_Block *state_; + ACE_Message_Block *mb_; // This maintains the state of the request. - JAWS_IO *io_; - // The reference to our IO interface (synch vs. asynch) - - JAWS_Pipeline *pipeline_; + JAWS_Pipeline_Handler *task_; // This is a reference to the next stage of the pipeline when the IO // request completes. @@ -164,7 +165,7 @@ public: JAWS_IO_Handler *create_io_handler (void); // This creates a new HTTP_Handler - void destroy_io_handler (JAWS_IO_Handler *handler, JAWS_IO *io); + void destroy_io_handler (JAWS_IO_Handler *handler); // The HTTP handler will call this method from HTTP_Handler::done to // tell the factory to reap up the handler as it is now done with // the protocol @@ -215,7 +216,7 @@ public: JAWS_IO_Handler *create_io_handler (void); // This creates a new HTTP_Handler - void destroy_io_handler (JAWS_IO_Handler *handler, JAWS_IO *io); + void destroy_io_handler (JAWS_IO_Handler *handler); // The HTTP handler will call this method from HTTP_Handler::done to // tell the factory to reap up the handler as it is now done with // the protocol diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp b/apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp index 706416256fe..7a5075cf416 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp @@ -2,14 +2,58 @@ #include "JAWS/Policy.h" -JAWS_Concurrency_Base * -JAWS_Synch_Dispatch_Policy::concurrency (void) +JAWS_Dispatch_Policy::JAWS_Dispatch_Policy (void) +{ +} + +JAWS_Dispatch_Policy::~JAWS_Dispatch_Policy (void) +{ +} + +ACE_INET_Addr * +JAWS_Synch_Dispatch_Policy::addr (void) { - return 0; + return this->addr_; } JAWS_IO * JAWS_Synch_Dispatch_Policy::io (void) { - return &(this->io_); + return this->io_; +} + +JAWS_IO_Acceptor * +JAWS_Synch_Dispatch_Policy::acceptor (void) +{ + return this->acceptor_; +} + +JAWS_Concurrency_Base * +JAWS_Synch_Dispatch_Policy::concurrency (void) +{ + return this->concurrency_; +} + +void +JAWS_Synch_Dispatch_Policy::addr (ACE_INET_Addr *addrp) +{ + this->addr_ = addrp; +} + +void +JAWS_Synch_Dispatch_Policy::io (JAWS_IO *iop) +{ + this->io_ = iop; +} + +void +JAWS_Synch_Dispatch_Policy::acceptor (JAWS_IO_Acceptor *acceptorp) +{ + this->acceptor_ = acceptorp; +} + +void +JAWS_Synch_Dispatch_Policy::concurrency (JAWS_Concurrency_Base *concp) +{ + this->concurrency_ = concp; } diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Policy.h b/apps/JAWS/server/PROTOTYPE/JAWS/Policy.h index a637c588779..3a40513e1d7 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Policy.h +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Policy.h @@ -10,16 +10,51 @@ class JAWS_IO; class JAWS_IO_Handler; class JAWS_IO_Handler_Factory; +class JAWS_Dispatch_Policy + // = TITLE + // Policy mechanism for choosing different concurrency models. + // + // = DESCRIPTION + // Given some (unspecified) state, decides what the concurrency + // model should be. (For now, we always return the same model.) +{ +public: + JAWS_Dispatch_Policy (void); + virtual ~JAWS_Dispatch_Policy (void); + + virtual ACE_INET_Addr *addr (void); + virtual JAWS_IO * io (void) = 0; + virtual JAWS_IO_Acceptor *acceptor (void) = 0; + virtual JAWS_Concurrency_Base * concurrency (void) = 0; + + virtual void addr (ACE_INET_Addr *addrp) = 0; + virtual void io (JAWS_IO *iop) = 0; + virtual void acceptor (JAWS_IO_Acceptor *acceptorp) = 0; + virtual void concurrency (JAWS_Concurrency_Base *concp) = 0; +}; + class JAWS_Synch_Dispatch_Policy : public JAWS_Dispatch_Policy { public: - virtual JAWS_Concurrency_Base * concurrency (void); - virtual JAWS_IO * io (void); + virtual ACE_INET_Addr *addr (void); + virtual JAWS_IO *io (void); + virtual JAWS_IO_Acceptor *acceptor (void); + virtual JAWS_Concurrency_Base *concurrency (void); + + virtual void addr (ACE_INET_Addr *addrp); + virtual void io (JAWS_IO *iop); + virtual void acceptor (JAWS_IO_Acceptor *acceptorp); + virtual void concurrency (JAWS_Concurrency_Base *concp); private: + ACE_INET_Addr *addr_; + + JAWS_IO_Acceptor *acceptor_; JAWS_IO_Handler_Factory *factory_; JAWS_IO_Handler *ioh_; - JAWS_IO &io_; + JAWS_IO *io_; + + JAWS_Concurrency_Base *concurrency_; }; #endif /* !defined (JAWS_POLICY_H) */ diff --git a/apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp b/apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp index 6a03222d299..77e0d077f45 100644 --- a/apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp +++ b/apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp @@ -32,6 +32,14 @@ void JAWS_Server::init (int argc, char *argv[]) { this->parse_args (argc, argv); + + JAWS_Thread_Pool_Singleton::instance ()->open (this->flags_, + this->nthreads_, + this->maxthreads_); + + JAWS_Thread_Per_Singleton::instance ()->open (this->flags_, + this->maxthreads_); + } int @@ -70,7 +78,7 @@ JAWS_Server::open (JAWS_Pipeline_Handler *protocol) return -1; } - db->addr (&inet_addr); + // db->addr (&inet_addr); db->handler (handler); db->task (JAWS_Pipeline_Accept_Task_Singleton::instance ()); @@ -85,7 +93,6 @@ JAWS_Server::open (JAWS_Pipeline_Handler *protocol) : JAWS_Thread_Per_Singleton::instance () ; - // concurrency->open (this->flags_, this->nthreads_, this->maxthreads_); concurrency->put (&mb); while (ACE_OS::thr_join (0, NULL) != -1) |