summaryrefslogtreecommitdiff
path: root/modules/CIAO/ciao/Port_Activator.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/ciao/Port_Activator.h')
-rw-r--r--modules/CIAO/ciao/Port_Activator.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/modules/CIAO/ciao/Port_Activator.h b/modules/CIAO/ciao/Port_Activator.h
new file mode 100644
index 00000000000..f3914d7d786
--- /dev/null
+++ b/modules/CIAO/ciao/Port_Activator.h
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file Port_Activator.h
+ *
+ * $Id$
+ *
+ * @authors Bala Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_PORT_ACTIVATOR_H
+#define CIAO_PORT_ACTIVATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-lite.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/CIAO_Server_Export.h"
+
+#include "tao/PortableServer/PortableServer.h"
+
+namespace CIAO
+{
+ /**
+ * @class Port_Activator
+ *
+ * @brief Base class for port activations
+ *
+ * This is a ABC for the Port_Activator_T <> template class where
+ * the bulk of the work is done. This class is simply a place holder
+ * so that we could use the pointer to this class to achieve
+ * polymorphism for facet and consumer servant activations.
+ *
+ */
+ class CIAO_SERVER_Export Port_Activator
+ {
+ public:
+ enum Type
+ {
+ Facet,
+ Sink
+ };
+
+ Port_Activator (const char *oid,
+ const char *name,
+ Type t);
+
+ virtual ~Port_Activator (void);
+
+ /// Return the oid of port that this activator encapulates.
+ const char* oid (void) const;
+
+ /// Set the oid
+ void oid (const char* oid);
+
+ /// Return the oid of port that this activator encapulates.
+ const char* name (void) const;
+
+ /// Activate the servant reponsible for this port.
+ /**
+ * There are intentionally no throw specifications. It is the
+ * caller's responsibility to handle CORBA and C++
+ * specifications.
+ */
+ virtual PortableServer::Servant activate (
+ const PortableServer::ObjectId &oid) = 0;
+
+ virtual void deactivate (
+ const PortableServer::Servant servant) = 0;
+
+ protected:
+ /// The object ID that is used to activate the servant within the
+ /// POA.
+ CORBA::String_var oid_;
+
+ /// Name of the port
+ CORBA::String_var name_;
+
+ /// What type of port is it, a consumer or facet.
+ Type const t_;
+ };
+}
+
+
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_PORT_ACTIVATOR_H*/