summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS3/jaws3/Protocol_Handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS3/jaws3/Protocol_Handler.h')
-rw-r--r--ACE/apps/JAWS3/jaws3/Protocol_Handler.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/ACE/apps/JAWS3/jaws3/Protocol_Handler.h b/ACE/apps/JAWS3/jaws3/Protocol_Handler.h
new file mode 100644
index 00000000000..68439365c92
--- /dev/null
+++ b/ACE/apps/JAWS3/jaws3/Protocol_Handler.h
@@ -0,0 +1,80 @@
+// $Id$
+#ifndef JAWS_PROTOCOL_HANDLER_H
+#define JAWS_PROTOCOL_HANDLER_H
+
+#include "ace/Message_Block.h"
+
+#include "jaws3/Export.h"
+#include "jaws3/Event_Completer.h"
+
+
+class JAWS_Export JAWS_Protocol_State
+{
+
+ friend class JAWS_Protocol_Handler;
+
+public:
+
+ virtual ~JAWS_Protocol_State (void);
+
+protected:
+
+ virtual int service (JAWS_Event_Completer *, void *data) = 0;
+
+ virtual JAWS_Protocol_State * transition ( const JAWS_Event_Result &
+ , void *data
+ , void *act
+ ) = 0;
+
+};
+
+class JAWS_Export JAWS_Protocol_Handler
+ : public JAWS_Event_Completer
+// = TITLE
+// Abstraction that interacts with concurrency dispatching.
+{
+
+ friend class JAWS_TPOOL_Concurrency;
+ friend class JAWS_TPR_Concurrency;
+ friend class JAWS_THYBRID_Concurrency;
+
+public:
+
+ JAWS_Protocol_Handler (JAWS_Protocol_State *state = 0, void *data = 0);
+
+ virtual int service (void);
+
+ virtual void dismiss (void)
+ {
+ delete this;
+ }
+
+protected:
+
+ virtual ~JAWS_Protocol_Handler (void);
+ // Try to guarantee this class will be created dynamically.
+
+protected:
+
+ void event_complete (const JAWS_Event_Result &result, void *act);
+ // The event completion routine that triggers the transition
+ // to the next Protocol State.
+
+ void default_complete (const JAWS_Event_Result &result, void *act)
+ {
+ this->event_complete (result, act);
+ }
+
+private:
+
+ JAWS_Protocol_State *state_;
+
+ void *data_;
+
+ ACE_Data_Block db_;
+ ACE_Message_Block mb_;
+
+};
+
+
+#endif /* JAWS_PROTOCOL_HANDLER_H */