Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'incubation/projects/org.eclipse.ecf.ipc/bundles/org.eclipse.ecf.ipc/src/org/eclipse/ecf/ipc/semaphore/SemaphoreResult.java')
-rw-r--r--incubation/projects/org.eclipse.ecf.ipc/bundles/org.eclipse.ecf.ipc/src/org/eclipse/ecf/ipc/semaphore/SemaphoreResult.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/incubation/projects/org.eclipse.ecf.ipc/bundles/org.eclipse.ecf.ipc/src/org/eclipse/ecf/ipc/semaphore/SemaphoreResult.java b/incubation/projects/org.eclipse.ecf.ipc/bundles/org.eclipse.ecf.ipc/src/org/eclipse/ecf/ipc/semaphore/SemaphoreResult.java
new file mode 100644
index 000000000..6ef5ea271
--- /dev/null
+++ b/incubation/projects/org.eclipse.ecf.ipc/bundles/org.eclipse.ecf.ipc/src/org/eclipse/ecf/ipc/semaphore/SemaphoreResult.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Clark N. Hobbie
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Clark N. Hobbie - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ecf.ipc.semaphore;
+
+/**
+ * <P>
+ * An internal class that contains the results from a native system call.
+ * </P>
+ * <P>
+ * Calls to the underlying operation system will often have sever pieces of information
+ * instead of just success and failure. This class allows clients to get back all the
+ * information at once.
+ * </P>
+ * <P>
+ * The RESULT_ constants are defined to make life easier for the JNI: accessing enum tags
+ * in JNI is somewhat difficult.
+ * </P>
+ *
+ * @author Clark N. Hobbie
+ */
+public class SemaphoreResult
+{
+ public static final int RESULT_SUCCESS = 0;
+
+ public static final int RESULT_INSUFFICIENT_PERMISSIONS = 1;
+
+ public static final int RESULT_DOES_NOT_EXIST = 2;
+
+ public static final int RESULT_UNKNOWN_ERROR = 3;
+
+ public static final int RESULT_TIMEOUT = 4;
+
+ public static final int RESULT_UNKNOWN_HANDLE = 5;
+
+ public static final String MSG_INSUFFICIENT_PERMISSIONS = "Insufficient permissions to access the semaphore";
+
+ public static final String MSG_SUCCESS = "success";
+
+ public static final String MSG_DOES_NOT_EXIST = "The semaphore does not exist";
+
+ public static final String MSG_UNKNOWN_ERROR = "An unknown error occurred while trying to access the semaphore";
+
+ public static final String MSG_TIMEOUT = "The specified period of timeout elapsed before the semaphore became available";
+
+ public static final String MSG_UNKNOWN_HANDLE = "The specified handle was not recognized as a semaphore handle by the OS";
+
+ public enum Results
+ {
+ Success(RESULT_SUCCESS, MSG_SUCCESS),
+ InsufficientPermissions(RESULT_INSUFFICIENT_PERMISSIONS, MSG_INSUFFICIENT_PERMISSIONS),
+ DoesNotExist(RESULT_DOES_NOT_EXIST, MSG_DOES_NOT_EXIST),
+ UnknownError(RESULT_UNKNOWN_ERROR, MSG_UNKNOWN_ERROR),
+ Timeout(RESULT_TIMEOUT, MSG_TIMEOUT),
+ UnknownHandle(RESULT_UNKNOWN_HANDLE, MSG_UNKNOWN_HANDLE);
+
+ public String message;
+
+ public int code;
+
+ private Results(int resultCode, String theMessage)
+ {
+ code = resultCode;
+ message = theMessage;
+ }
+
+ public static Results toResult(int code)
+ {
+ Results result = UnknownError;
+
+ for (Results r : values())
+ {
+ if (code == r.code)
+ {
+ result = r;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ public static int foo()
+ {
+ return -1;
+ }
+ }
+
+ public void convertResultCode()
+ {
+ result = Results.toResult(resultCode);
+ }
+
+ public int resultCode;
+
+ public Results result;
+
+ public int errorCode;
+
+ public long handle;
+}

Back to the top