summaryrefslogtreecommitdiff
path: root/apps/JAWS
diff options
context:
space:
mode:
authorjxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-03-24 04:52:23 +0000
committerjxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-03-24 04:52:23 +0000
commit6a0480358b46379cadd77498043c3ad69f57cb8e (patch)
tree584b9da10ddc4dcefdc835cec7230b4b26a4238c /apps/JAWS
parentb6f15ee8983f3d57f2d0d5d6eeaa870b2b40dca5 (diff)
downloadATCD-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.cpp9
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Concurrency.h17
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.cpp14
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Data_Block.h9
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.cpp26
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/IO_Handler.h21
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Policy.cpp52
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Policy.h41
-rw-r--r--apps/JAWS/server/PROTOTYPE/JAWS/Server.cpp11
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)