aboutsummaryrefslogtreecommitdiff
path: root/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java')
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java
new file mode 100644
index 00000000..e46b785d
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java
@@ -0,0 +1,133 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.BAD_INV_ORDER;
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.OBJ_ADAPTER;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
+import org.omg.PortableServer.POAManagerPackage.State;
+import org.omg.PortableServer.POAPackage.AdapterNonExistent;
+
+/**
+ * Implements the remote POA control servant.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class remotePoaControlServant
+ extends remotePoaControlPOA
+{
+ POA target;
+ public byte[] target_object_id;
+
+ /**
+ * Finds the child target POA to control, by name.
+ */
+ public void setControlTarget(String child_poa_name)
+ {
+ try
+ {
+ target = _poa().find_POA(child_poa_name, false);
+ }
+ catch (AdapterNonExistent ex)
+ {
+ ex.printStackTrace();
+ throw new BAD_PARAM();
+ }
+ }
+
+ /**
+ * Get the state of the target POA that must be previously set.
+ */
+ public int getPoaMode()
+ {
+ if (target == null)
+ throw new BAD_INV_ORDER();
+ return target.the_POAManager().get_state().value();
+ }
+
+ /**
+ * Set the state of the target POA that must be previously set.
+ *
+ * @param mode the required POA mode plus:
+ * 100 = deactivate default associated object.
+ * 200 = activate default associated object.
+ */
+ public void setPoaMode(int mode)
+ {
+ if (target == null)
+ throw new BAD_INV_ORDER();
+
+ POAManager manager = target.the_POAManager();
+
+ try
+ {
+ switch (mode)
+ {
+ case State._ACTIVE :
+ manager.activate();
+ break;
+
+ case State._HOLDING :
+ manager.hold_requests(false);
+ break;
+
+ case State._DISCARDING :
+ manager.discard_requests(false);
+ break;
+
+ case State._INACTIVE :
+ manager.deactivate(false, false);
+ break;
+
+ case 100 :
+ try
+ {
+ target.deactivate_object(target_object_id);
+ }
+ catch (Exception ex)
+ {
+ System.err.println("Unable to deactivate");
+ ex.printStackTrace();
+ }
+ break;
+
+ case 200 :
+ try
+ {
+ target.activate_object_with_id(target_object_id, null);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException("Unable to activate", ex);
+ }
+ break;
+
+ default :
+ throw new BAD_PARAM();
+ }
+ }
+ catch (AdapterInactive ex)
+ {
+ throw new OBJ_ADAPTER("Inactive", 0x5001, CompletionStatus.COMPLETED_YES);
+ }
+ }
+} \ No newline at end of file