CORD-1071 Refactor VTN node service
Done
- Separated interface, implementation and store for node management
- Added unit tests for node manager and handler
- Offloaded more of the event handling off of the Atomix event thread
Todo
- Add REST interface for the node service
Change-Id: Ibf90d3a621013497cc891ca3086db6648f5d49df
diff --git a/src/main/java/org/opencord/cordvtn/api/node/CordVtnNodeState.java b/src/main/java/org/opencord/cordvtn/api/node/CordVtnNodeState.java
index e3d9cd5..49e02ff 100644
--- a/src/main/java/org/opencord/cordvtn/api/node/CordVtnNodeState.java
+++ b/src/main/java/org/opencord/cordvtn/api/node/CordVtnNodeState.java
@@ -18,13 +18,64 @@
/**
* Entity that defines possible init state of the cordvtn node.
*/
-public interface CordVtnNodeState {
+public enum CordVtnNodeState {
+
+ INIT {
+ @Override
+ public void process(CordVtnNodeHandler handler, CordVtnNode node) {
+ handler.processInitState(node);
+ }
+
+ @Override
+ public CordVtnNodeState nextState() {
+ return DEVICE_CREATED;
+ }
+ },
+ DEVICE_CREATED {
+ @Override
+ public void process(CordVtnNodeHandler handler, CordVtnNode node) {
+ handler.processDeviceCreatedState(node);
+ }
+
+ @Override
+ public CordVtnNodeState nextState() {
+ return PORT_CREATED;
+ }
+ },
+ PORT_CREATED {
+ @Override
+ public void process(CordVtnNodeHandler handler, CordVtnNode node) {
+ handler.processPortCreatedState(node);
+ }
+
+ @Override
+ public CordVtnNodeState nextState() {
+ return COMPLETE;
+ }
+ },
+ COMPLETE {
+ @Override
+ public void process(CordVtnNodeHandler handler, CordVtnNode node) {
+ handler.processCompleteState(node);
+ }
+
+ @Override
+ public CordVtnNodeState nextState() {
+ // last state
+ return COMPLETE;
+ }
+ };
+
/**
- * Returns null for no state.
+ * Processes the current node state to proceed to the next state.
*
- * @return null
+ * @param handler cordvtn node state handler
+ * @param node cordvtn node
*/
- static CordVtnNodeState noState() {
- return null;
- }
+ public abstract void process(CordVtnNodeHandler handler, CordVtnNode node);
+
+ /**
+ * Returns the next node state.
+ */
+ public abstract CordVtnNodeState nextState();
}