@@ -0,0 +1,1724 @@
+/*%0A * Copyright 2014 Real Logic Ltd.%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage uk.co.real_logic.agrona.concurrent;%0A%0A/**%0A * Signal a waiting thread that an event has occurred which it has been waiting on.%0A */%0Apublic class Signal%0A%7B%0A    private boolean signalRaised;%0A%0A    public Signal()%0A    %7B%0A        signalRaised = false;%0A    %7D%0A%0A    public synchronized void signal()%0A    %7B%0A        if (signalRaised)%0A        %7B%0A            throw new IllegalStateException(%22Attempting to signal when signal has already been raised%22);%0A        %7D%0A%0A        signalRaised = true;%0A        this.notify();%0A    %7D%0A%0A    /**%0A     * Await a signal with a timeout value in milliseconds.%0A     *%0A     * @param awaitTimeout in milliseconds.%0A     */%0A    public synchronized void await(final long awaitTimeout)%0A    %7B%0A        try%0A        %7B%0A            final long beginTime = System.currentTimeMillis();%0A            while (!signalRaised)%0A            %7B%0A                wait(awaitTimeout - (System.currentTimeMillis() - beginTime));%0A            %7D%0A        %7D%0A        catch (final InterruptedException ex)%0A        %7B%0A            throw new RuntimeException(ex);%0A        %7D%0A        finally%0A        %7B%0A            signalRaised = false;%0A        %7D%0A    %7D%0A%7D%0A

add the signalling class from Aeron to the public API