Package hj.runtime.wsh

Source Code of hj.runtime.wsh.FinishScope

package hj.runtime.wsh;

import hj.lang.phaser;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.concurrent.locks.ReentrantLock;

/**
*
* @author bchase
*/
public class FinishScope {
    // This is not apart of original library
    // Used to track information within a single Finish block
    // Information includes all Activities and Phasers within it.
    // Also makes code cleaner in Activity
    private LinkedList<Activity> scope;
    private ReentrantLock lock;
   
    private LinkedList<phaser> phasers;
   
    public FinishScope() {
        scope = new LinkedList<Activity>();
        lock = new ReentrantLock();
        phasers = new LinkedList<phaser>();
    }
   
    public void add(Activity activity) {
        lock.lock();
        try {
            scope.add(activity);
        } finally {
            lock.unlock();
        }
    }
   
    public Activity poll() {
        Activity result = null;
        lock.lock();
        try {
            result = scope.poll();
        } finally {
            lock.unlock();
        }
        return result;
    }
   
    public int size() {
        int result;
        lock.lock();
        try {
            result= scope.size();
        } finally {
            lock.unlock();
        }
        return result;
    }
   
    public void addPhaser(phaser ph) {
        lock.lock();
        try {
            phasers.add(ph);
        } finally {
            lock.unlock();
        }
    }
   
    public void unregisterAllPhasers(Activity owner) {
        lock.lock();
        try {
            Iterator<phaser> iter= phasers.iterator();
            while (iter.hasNext()) {
                phaser ph = iter.next();
                ph.unregisterSignaler(owner);
                ph.unregisterWaiter(owner);
            }
        } finally {
            lock.unlock();
        }
    }
}
TOP

Related Classes of hj.runtime.wsh.FinishScope

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.