/*******************************************************************************
* Copyright (c) 2013 Imperial College London.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Raul Castro Fernandez - initial design and implementation
******************************************************************************/
package uk.ac.imperial.lsds.seep.processingunit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.ac.imperial.lsds.seep.comm.serialization.DataTuple;
import uk.ac.imperial.lsds.seep.infrastructure.NodeManager;
import uk.ac.imperial.lsds.seep.operator.Operator;
import uk.ac.imperial.lsds.seep.runtimeengine.DataStructureAdapter;
import uk.ac.imperial.lsds.seep.runtimeengine.InputQueue;
public class StatelessProcessingWorker implements Runnable{
final private Logger LOG = LoggerFactory.getLogger(StatelessProcessingWorker.class);
private InputQueue iq;
private Operator runningOp;
///\todo{for now, multicore is only supported in those operators with only one inputDataIngestionMode}
public StatelessProcessingWorker(DataStructureAdapter dsa, Operator runningOp) {
if(dsa.getUniqueDso() != null){
this.iq = (InputQueue) dsa.getUniqueDso();
}
else{
LOG.error("-> Operation not permitted at this moment.. stateful multi-core on dist barrier");
}
this.runningOp = runningOp;
}
@Override
public void run() {
while(true){
DataTuple dt = iq.pull();
runningOp.processData(dt);
}
}
}