diff options
author | Martin <marcin.j.chrzanowski@gmail.com> | 2019-12-26 15:27:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-26 15:27:44 +0100 |
commit | 8b076ed54b692381a3c1410b704bdad33ad5ca0b (patch) | |
tree | 004c318b28166e70d3ef8fd988d75fef136c68ff /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Module.java | |
parent | cbb43ba62d11888ce73314465dcffb537b6cd295 (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.java | 24 |
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; |