IOExitLock.java interface


IOExitLock.java

/*
 *   Licensed Materials - Property of IBM
 *
 *   "Restricted Materials of IBM"
 *
 *   5724-H72
 * 
 *    Copyright IBM Corp. 2011, 2020. All Rights Reserved.
 * 
 *   disclosure restricted by GSA ADP Schedule Contract with
 *   IBM Corp.
 */
package com.ibm.wmqfte.exitroutine.api;

import java.io.IOException;

/**
 * Represents a lock on a resource for either shared or exclusive access.
 * {@link IOExitLock} instances are returned from
 * {@link IOExitChannel#tryLock(boolean)} calls and WMQFTE will request the
 * release of the lock at the appropriate time during a transfer. Additionally, when
 * a {@link IOExitChannel#close()} method is called it will be the
 * responsibility of the channel to release any associated locks.
 */
public interface IOExitLock {

	/**
	 * Releases the lock.
	 * <p>
	 * After this method has been successfully called the lock is to be deemed as invalid.
	 * 
	 * @throws IOException
	 *             If the channel associated with the lock is not open or
	 *             another problem occurs while attempting to release the lock.
	 */
	void release() throws IOException;

	/**
	 * Indicates whether this lock is valid.
	 * <p>
	 * A lock is considered valid until its @ {@link #release()} method is
	 * called or the associated {@link IOExitChannel} is closed.
	 * 
	 * @return {@code true} if this lock is valid, {@code false} otherwise.
	 */
	boolean isValid();

	/**
	 * @return {@code true} if this lock is for shared access, {@code false} if
	 *         this lock is for exclusive access.
	 */
	boolean isShared();
}