summaryrefslogtreecommitdiff
path: root/trunk/TAO/tao/Utils/ORB_Manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/tao/Utils/ORB_Manager.h')
-rw-r--r--trunk/TAO/tao/Utils/ORB_Manager.h248
1 files changed, 248 insertions, 0 deletions
diff --git a/trunk/TAO/tao/Utils/ORB_Manager.h b/trunk/TAO/tao/Utils/ORB_Manager.h
new file mode 100644
index 00000000000..9f06fe7d3ba
--- /dev/null
+++ b/trunk/TAO/tao/Utils/ORB_Manager.h
@@ -0,0 +1,248 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file ORB_Manager.h
+ *
+ * $Id$
+ *
+ * @author Chris Cleeland <cleeland@cs.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_ORB_MANAGER_H
+#define TAO_ORB_MANAGER_H
+#include /**/ "ace/pre.h"
+
+#include "tao/Utils/utils_export.h"
+#include "tao/PortableServer/PortableServer.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/ORB.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+/**
+ * @class TAO_ORB_Manager
+ *
+ * @brief Helper class for simple ORB/POA initialization and
+ * registering servants with the POA.
+ *
+ * This class is a TAO extension that makes it easier to write
+ * CORBA applications. It's just a wrapper and doesn't do
+ * anything special within the ORB itself.
+ */
+class TAO_UTILS_Export TAO_ORB_Manager
+{
+public:
+ // = Initialization and termination methods.
+ /** Constructor.
+ *
+ * @param orb pointer to an ORB which is duplicated an stored
+ * internally in an ORB_var. If pointer is 0,
+ * a new ORB pointer is created internally in the init()
+ * call.
+ *
+ * @param poa pointer to a POA which is duplicated and stored
+ * internally in a POA_var. If pointer is 0,
+ * a pointer to the Root POA is obtained from the ORB.
+ *
+ * @param poa_manager pointer to a POA Manager which is duplicated
+ * and stored internally in a POAManager_var.
+ * If pointer is 0, a new POAManager is created
+ * internally in the init() call.
+ */
+ TAO_ORB_Manager (CORBA::ORB_ptr orb = 0,
+ PortableServer::POA_ptr poa = 0,
+ PortableServer::POAManager_ptr poa_manager = 0);
+
+ /**
+ * Initialize the ORB/root POA, using the supplied command line
+ * arguments or the default ORB components.
+ *
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int init (int &argc,
+ char *argv[]
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Initialize the ORB/root POA, using the supplied command line
+ * arguments or the default ORB components.
+ *
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int init (int &argc,
+ char *argv[],
+ const char *orb_name
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+#if !defined (CORBA_E_MICRO)
+ /**
+ * Creates a child poa under the root poa with PERSISTENT and
+ * USER_ID policies. Call this if you want a @a child_poa with the
+ * above policies, otherwise call init.
+ *
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int init_child_poa (int &argc,
+ char *argv[],
+ const char *poa_name,
+ const char *orb_name = 0
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+#endif /* CORBA_E_MICRO */
+
+ /**
+ * Shut down. Invoke the destroy() methods on the orb and poa.
+ *
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int fini (ACE_ENV_SINGLE_ARG_DECL);
+
+ /// Destructor.
+ ~TAO_ORB_Manager (void);
+
+ // = Accessor methods.
+
+ /**
+ * Put POA manager into the <Active> state, so that incoming corba
+ * requests are processed. This method is useful for clients,
+ * which are not going to enter "orb->run" loop, yet may want to
+ * service incoming requests while waiting for a result of CORBA
+ * call on a server.
+ *
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int activate_poa_manager (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Activate <servant>, using the POA <activate_object> call. Users
+ * can call this method multiple times to activate multiple objects.
+ *
+ * @return 0 on failure, a string representation of the object ID if
+ * successful. Caller of this method is responsible for
+ * memory deallocation of the string.
+ */
+ char *activate (PortableServer::Servant servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /** Deactivate object in RootPOA.
+ *
+ * @param id A string representation of the Object ID
+ * of the servant to deactivate in the POA
+ */
+ void deactivate (const char *id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+#if !defined (CORBA_E_MICRO)
+ /**
+ * Precondition: init_child_poa has been called. Activate <servant>
+ * using the POA <activate_object_with_id> created from the string
+ * <object_name>. Users should call this to activate objects under
+ * the child_poa.
+ *
+ * @param object_name String name which will be used to create
+ * an Object ID for the servant.
+ * @param servant The servant to activate under the child POA.
+ *
+ * @return 0 on failure, a string representation of the object ID if
+ * successful. Caller of this method is responsible for
+ * memory deallocation of the string.
+ */
+ char *activate_under_child_poa (const char *object_name,
+ PortableServer::Servant servant
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Deactivate object in child POA.
+ *
+ * @param id string representation of the object ID, which represents
+ * the object to deactivate in the POA
+ */
+ void deactivate_under_child_poa (const char *id
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+#endif /* CORBA_E_MICRO */
+
+ /**
+ * Run the ORB event loop with the specified @a tv time value.
+ *
+ * @param tv the time interval for how long to run the ORB event loop.
+ * @retval -1 Failure
+ * @retval 0 Success
+ */
+ int run (ACE_Time_Value &tv
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Run the ORB event loop.
+ */
+ int run (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS);
+
+ /**
+ * Accessor which returns the ORB pointer. Following the normal
+ * CORBA memory management rules of return values from functions,
+ * this function duplicates the orb return value before returning
+ * it.
+ *
+ * @return ORB pointer which has been duplicated, so caller
+ * must release pointer when done.
+ */
+ CORBA::ORB_ptr orb (void);
+
+ /**
+ * Accessor which returns the root poa. Following the normal CORBA
+ * memory management rules of return values from functions, this
+ * function duplicates the poa return value before returning it.
+ *
+ * @return Root POA pointer which has been duplicated. Caller
+ * must release pointer when done.
+ */
+ PortableServer::POA_ptr root_poa (void);
+
+ /**
+ * Accessor which returns the child poa. Following the normal CORBA
+ * memory management rules of return values from functions, this
+ * function duplicates the poa return value before returning it.
+ *
+ * @return Child POA pointer which has been duplicated. Caller
+ * must release pointer when done.
+ */
+ PortableServer::POA_ptr child_poa (void);
+
+ /**
+ * Accessor which returns the poa manager. Following the normal
+ * CORBA memory management rules of return values from functions,
+ * this function duplicates the poa manager return value before
+ * returning it.
+ *
+ * @return POAManager pointer which has been duplicated. Caller
+ * must release pointer when done.
+ */
+ PortableServer::POAManager_ptr poa_manager (void);
+
+protected:
+ /// The ORB.
+ CORBA::ORB_var orb_;
+
+ /// The POA for this ORB.
+ PortableServer::POA_var poa_;
+
+ /// Child poa under the root POA.
+ PortableServer::POA_var child_poa_;
+
+ /// The POA manager of poa_.
+ PortableServer::POAManager_var poa_manager_;
+};
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#include /**/ "ace/post.h"
+#endif /* TAO_ORB_MANAGER_H */