Class OperationHandleImpl<T extends java.lang.annotation.Annotation>

  • All Implemented Interfaces:
    OperationHandle<T>

    public class OperationHandleImpl<T extends java.lang.annotation.Annotation>
    extends java.lang.Object
    implements OperationHandle<T>
    • Field Detail

      • identifier

        private final OperationIdentifier<T extends java.lang.annotation.Annotation> identifier
      • operationLock

        private final java.lang.Object operationLock
      • activeThreads

        private final java.util.HashSet<java.lang.Long> activeThreads
      • userData

        private java.lang.Object userData
    • Method Detail

      • getIdentifier

        public OperationIdentifier<T> getIdentifier()
        Description copied from interface: OperationHandle
        Returns a unique identifier for this operation
        Specified by:
        getIdentifier in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Returns:
        A non-null unique identifier for this operation
      • getState

        public OperationState getState()
        Description copied from interface: OperationHandle
        Gets the current state of this operation
        Specified by:
        getState in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Returns:
        The current state of this operation
      • shutdownByFiat

        void shutdownByFiat()
        operationLock must be held
      • checkState

        private void checkState()
      • getActiveThreads

        public java.util.Set<java.lang.Long> getActiveThreads()
        Description copied from interface: OperationHandle
        Gets a set of threads upon which this Operation is active
        Specified by:
        getActiveThreads in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Returns:
        The set of threads upon which this Operation is active
      • suspend

        public void suspend​(long threadId)
        Description copied from interface: OperationHandle
        Suspends this operation on the given thread id. If this Operation is not associated with the given threadId this method does nothing
        Specified by:
        suspend in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Parameters:
        threadId - The thread on which to suspend this operation
      • suspend

        public void suspend()
        Description copied from interface: OperationHandle
        Suspends this operation on the current thread. If this Operation is not associated with the current threadId this method does nothing
        Specified by:
        suspend in interface OperationHandle<T extends java.lang.annotation.Annotation>
      • resume

        public void resume​(long threadId)
                    throws java.lang.IllegalStateException
        Description copied from interface: OperationHandle
        Resumes this operation on the given thread id. If this Operation is already associated with the given threadId this method does nothing
        Specified by:
        resume in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Parameters:
        threadId - The thread on which to resume this operation
        Throws:
        java.lang.IllegalStateException - if the Operation is closed or if the given thread is associated with a different Operation of the same type
      • resume

        public void resume()
                    throws java.lang.IllegalStateException
        Description copied from interface: OperationHandle
        Resumes this operation on the current thread. If this Operation is already associated with the current thread this method does nothing
        Specified by:
        resume in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Throws:
        java.lang.IllegalStateException - if the Operation is closed or if the current thread is associated with a different Operation of the same type
      • closeOperation

        public void closeOperation()
        Description copied from interface: OperationHandle
        suspends this Operation on all threads where it is associated and closes the operation. All resume calls on this handle after this is called will throw IllegalStateException. If this handle is already closed this method does nothing
        Specified by:
        closeOperation in interface OperationHandle<T extends java.lang.annotation.Annotation>
      • getOperationData

        public java.lang.Object getOperationData()
        Description copied from interface: OperationHandle
        Gets arbitrary Operation data to be associated with this Operation
        Specified by:
        getOperationData in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Returns:
        Arbitrary (possibly null) data that is associated with this Operation
      • setOperationData

        public void setOperationData​(java.lang.Object data)
        Description copied from interface: OperationHandle
        Sets arbitrary Operation data to be associated with this Operation
        Specified by:
        setOperationData in interface OperationHandle<T extends java.lang.annotation.Annotation>
        Parameters:
        data - (possibly null) data that is associated with this Operation
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object