Package org.rzo.yajsw.wrapper

Source Code of org.rzo.yajsw.wrapper.MissingTriggerAction

package org.rzo.yajsw.wrapper;

import java.util.concurrent.Executor;
import java.util.logging.Logger;

import org.rzo.yajsw.util.Cycler;

class MissingTriggerAction implements TriggerAction
{
  volatile private Cycler  _cycler;
  volatile private int  _counter  = 0;
  private int        _count;
  private TriggerAction[]  _actions;
  Executor        _executor;

  MissingTriggerAction(Executor executor, long period, int count, TriggerAction[] actions, final boolean autoStop, final Logger logger)
  {
    _count = count;
    _executor = executor;
    _actions = actions;
    _cycler = new Cycler(period, period, executor, new Runnable()
    {
      public void run()
      {
        // System.out.println("missing trigger "+_counter + " "+_count);
        if (_counter < _count)
        {
          if (autoStop)
            _cycler.stop();
          for (final TriggerAction action : _actions)
            if (action != null)
            {
              // run the action in a separate thread, because on
              // restart the cycler thread will be interrupted
              _executor.execute(new Runnable()
              {
                public void run()
                {
                  // TODO add logger
                  logger.info("missing trigger executed, found # " + _counter + " triggers during check period");
                  action.execute("");
                }
              });
            }
        }
        else
          _counter = 0;
      }
    });
  }

  void start()
  {
    _cycler.start();
  }

  void stop()
  {
    _cycler.stop();
  }

  public Object execute(String line)
  {
    _counter++;
    return null;
  }

}
TOP

Related Classes of org.rzo.yajsw.wrapper.MissingTriggerAction

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.