diff options
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.java | 108 |
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; +} |