/*******************************************************************************
* 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;
/**
* A problem occurred while trying to use an IPC mechanism.
*
* <P>
* This class allows clients to distinguish between exceptions generated by the classes
* in this package and exceptions from other sources. The exact nature of the exception
* should be denoted by the message, which should be taken from one of the constants
* defined in the {@link Messages} class.
*
* @author Clark N. Hobbie
*/
@SuppressWarnings("serial")
public class IPCException extends Exception
{
public static final String MSG_ALREADY_CONNECTED
= "The system is already connected to the shared memory segment";
public static final String MSG_ERROR_OPENING_MAPPING_FILE
= "Caught an exception while trying to open the underlying file for the segment";
public static final String MSG_ERROR_CREATING_MAP
= "Caught an exception while trying to obtain a map from the underlying file channel";
public static final String MSG_NOT_CONNECTED
= "Attempt to access the segment before connecting to it.";
public static final String MSG_PERMISSIONS =
"The process is not allowed to manipulate the semaphore";
public static final String MSG_UNKNOWN =
"An unknown/unanticipated error occurred while trying ot manipulate the semaphore";
public static final String MSG_EXCEPTION_CREATING_FILE =
"Caught an exception while trying to create a file associated with the IPC mechanism";
public static final String MSG_TIMEOUT =
"A timeout occurred while waiting for the resource to become available";
public enum Errors
{
AlreadyConnected(MSG_ALREADY_CONNECTED),
ErrorOpeningMappingFile(MSG_ERROR_OPENING_MAPPING_FILE),
ErrorCreatingMap(MSG_ERROR_CREATING_MAP),
NotConnected(MSG_NOT_CONNECTED),
Permissions(MSG_PERMISSIONS),
Unknown(MSG_UNKNOWN),
ExceptionCreatingFile(MSG_EXCEPTION_CREATING_FILE),
Timeout(MSG_TIMEOUT),
;
public String message;
private Errors(String msg)
{
message = msg;
}
}
private Errors myError;
public Errors getError()
{
return myError;
}
public void setError(Errors error)
{
myError = error;
}
public IPCException()
{}
public IPCException (String msg)
{
super(msg);
}
public IPCException(Throwable cause)
{
super(cause);
}
public IPCException (String msg, Throwable cause)
{
super(msg, cause);
}
public IPCException(Errors error)
{
super(error.message);
setError(error);
}
public IPCException(Errors error, Throwable t)
{
super(error.message, t);
setError(error);
}
}