Skip to content

Commit

Permalink
Improoved Scheduler and Task
Browse files Browse the repository at this point in the history
  • Loading branch information
Spectrum authored and Spectrum committed Oct 25, 2013
1 parent b70ccc4 commit 3efe0fb
Show file tree
Hide file tree
Showing 9 changed files with 307 additions and 142 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package cz.cuni.mff.d3s.deeco.executor;

import cz.cuni.mff.d3s.deeco.task.Task;

public interface ExecutionListener {
public void executionCompleted( Task task );
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/**
*/
package cz.cuni.mff.d3s.deeco.scheduler;


import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;


import cz.cuni.mff.d3s.deeco.executor.Executor;
import cz.cuni.mff.d3s.deeco.task.Task;

public class LocalTimeScheduler implements Scheduler{
Map<Task, TaskInfo> tasks;
Executor executor;
private States state;

private class TaskInfo{
Timer timer;
States state;

public TaskInfo(){
timer = new Timer();
state = States.STOPPED;
}
}

private enum States{
RUNNING,
STOPPED
}

public LocalTimeScheduler( Executor executor ){
this.executor = executor;
tasks = new HashMap<>();
}

@Override
public void executionCompleted(Task task) {
tasks.get(task).state = States.STOPPED;
}

@Override
public void start() {
if( state == States.RUNNING )
return;


}

@Override
public void stop() {
if( state == States.STOPPED )
return;
}

@Override
public void removeTasks( List<Task> tasks ){
// tasks.removeAll(tasks);
}

@Override
public void addTasks( List<Task> tasks ){

}

@Override
public void addTask(Task task) {
tasks.put(task, new TaskInfo());
}

@Override
public void removeTask(Task task) {
tasks.remove(task);
}

private void startTask(final Task task) {
TaskInfo ti = tasks.get(task);
ti.timer.scheduleAtFixedRate(new TimerTask() {

@Override
public void run() {
taskTimerFired(task);
}
}, 0, task.getSchedulingSpecification().getPeriod());
}

protected void taskTimerFired(Task task) {
if( tasks.get(task).state == States.RUNNING ){
// TODO : Implement error reporting
return;
}

tasks.get(task).state = States.RUNNING;
executor.execute(task);
}
}
17 changes: 17 additions & 0 deletions jdeeco-core/src/cz/cuni/mff/d3s/deeco/scheduler/Scheduler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
*/
package cz.cuni.mff.d3s.deeco.scheduler;

import java.util.List;

import cz.cuni.mff.d3s.deeco.executor.ExecutionListener;
import cz.cuni.mff.d3s.deeco.task.Task;

public interface Scheduler extends ExecutionListener {
public void start();
public void stop();
public void addTask( Task task );
public void addTasks( List<Task> tasks );
public void removeTask( Task task );
public void removeTasks( List<Task> tasks );
}
6 changes: 4 additions & 2 deletions jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleTask.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package cz.cuni.mff.d3s.deeco.task;

import java.util.List;
import java.util.Random;
import java.util.UUID;


import cz.cuni.mff.d3s.deeco.knowledge.ChangeSet;
import cz.cuni.mff.d3s.deeco.knowledge.KnowledgeReference;
import cz.cuni.mff.d3s.deeco.knowledge.ValueSet;
import cz.cuni.mff.d3s.deeco.model.runtime.api.SchedulingSpecification;

public class EnsembleTask implements Task {
public class EnsembleTask extends Task {

@Override
public ChangeSet invoke(ValueSet values) {
Expand All @@ -26,5 +29,4 @@ public SchedulingSpecification getSchedulingSpecification() {
// TODO Auto-generated method stub
return null;
}

}
5 changes: 3 additions & 2 deletions jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/ProcessTask.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package cz.cuni.mff.d3s.deeco.task;

import java.util.List;
import java.util.Random;
import java.util.UUID;

import cz.cuni.mff.d3s.deeco.knowledge.ChangeSet;
import cz.cuni.mff.d3s.deeco.knowledge.KnowledgeReference;
import cz.cuni.mff.d3s.deeco.knowledge.ValueSet;
import cz.cuni.mff.d3s.deeco.model.runtime.api.SchedulingSpecification;

public class ProcessTask implements Task {
public class ProcessTask extends Task {

@Override
public ChangeSet invoke(ValueSet values) {
Expand All @@ -25,5 +27,4 @@ public List<KnowledgeReference> getInputReferences() {
public SchedulingSpecification getSchedulingSpecification() {
return null;
}

}
8 changes: 4 additions & 4 deletions jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import cz.cuni.mff.d3s.deeco.knowledge.ValueSet;
import cz.cuni.mff.d3s.deeco.model.runtime.api.SchedulingSpecification;

public interface Task {
ChangeSet invoke(ValueSet values);
List<KnowledgeReference> getInputReferences();
SchedulingSpecification getSchedulingSpecification();
public abstract class Task {
public abstract ChangeSet invoke(ValueSet values);
public abstract List<KnowledgeReference> getInputReferences();
public abstract SchedulingSpecification getSchedulingSpecification();
}
Loading

0 comments on commit 3efe0fb

Please sign in to comment.