All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.uma.jmetalsp.examples.streamingdatasource.SimpleStreamingCounterDataSource Maven / Gradle / Ivy

The newest version!
package org.uma.jmetalsp.examples.streamingdatasource;

import org.uma.jmetalsp.StreamingDataSource;
import org.uma.jmetalsp.observeddata.SingleObservedData;
import org.uma.jmetalsp.observer.Observable;
import org.uma.jmetalsp.observer.impl.DefaultObservable;

/**
 * This class emits the value of a counter periodically after a given delay (in milliseconds)
 * @author Antonio J. Nebro 
 */
public class SimpleStreamingCounterDataSource
				implements StreamingDataSource> {
	private Observable> observable;
	private int dataDelay ;

	/**
   *
   * @param observable
   * @param dataDelay Delay in milliseconds
   */
	public SimpleStreamingCounterDataSource(Observable> observable, int dataDelay) {
		this.observable = observable ;
		this.dataDelay = dataDelay ;
	}

	public SimpleStreamingCounterDataSource(int dataDelay) {
	  this(new DefaultObservable<>(), dataDelay);
  }

	@Override
	public void run() {
		int counter = 0 ;
		while (true) {
			try {
				Thread.sleep(dataDelay);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}

			observable.setChanged(); ;
			observable.notifyObservers(new SingleObservedData(counter));
			counter ++ ;
		}
	}

  @Override
  public Observable> getObservable() {
    return this.observable;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy