m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java
diff options
context:
space:
mode:
authorMartin <marcin.j.chrzanowski@gmail.com>2019-12-26 15:27:44 +0100
committerGitHub <noreply@github.com>2019-12-26 15:27:44 +0100
commit8b076ed54b692381a3c1410b704bdad33ad5ca0b (patch)
tree004c318b28166e70d3ef8fd988d75fef136c68ff /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java
parentcbb43ba62d11888ce73314465dcffb537b6cd295 (diff)
Refactor handle (#75)
* Refactor passing messages to handler * Add RMIMessage skeleton * Handle RMI message in RMI module
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java
index 9744971..a50a95f 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java
@@ -2,19 +2,37 @@ package pl.edu.mimuw.cloudatlas.agent.modules;
import pl.edu.mimuw.cloudatlas.agent.Executor;
import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.TimerSchedulerMessage;
+import pl.edu.mimuw.cloudatlas.agent.messages.RMIMessage;
/*
* A Module is a (potentially stateful) event handler.
*/
public abstract class Module {
- protected AgentMessage.AgentModule moduleType;
+ public class InvalidMessageType extends Exception {
+ public InvalidMessageType(String message) {
+ super(message);
+ }
+ }
+
+ protected ModuleType moduleType;
protected Executor executor;
- public Module(AgentMessage.AgentModule moduleType) {
+ public Module(ModuleType moduleType) {
this.moduleType = moduleType;
}
- public abstract void handle(AgentMessage event) throws InterruptedException ;
+ public void handle(AgentMessage event) throws InterruptedException, InvalidMessageType {
+ event.callMe(this);
+ }
+
+ public void handleTyped(TimerSchedulerMessage message) throws InterruptedException, InvalidMessageType {
+ throw new InvalidMessageType("Got a TimerSchedulerMessage in module " + moduleType.toString());
+ }
+
+ public void handleTyped(RMIMessage message) throws InterruptedException, InvalidMessageType {
+ throw new InvalidMessageType("Got an RMIMessage in module " + moduleType.toString());
+ }
public void setExecutor(Executor executor) {
this.executor = executor;