|
22 | 22 | import org.eclipse.dataplane.domain.controlplane.ControlPlane; |
23 | 23 | import org.eclipse.dataplane.domain.dataflow.DataFlow; |
24 | 24 | import org.eclipse.dataplane.domain.dataflow.DataFlowPrepareMessage; |
| 25 | +import org.eclipse.dataplane.domain.dataflow.DataFlowResumeMessage; |
25 | 26 | import org.eclipse.dataplane.domain.dataflow.DataFlowStartMessage; |
26 | 27 | import org.eclipse.dataplane.domain.dataflow.DataFlowStartedNotificationMessage; |
27 | 28 | import org.eclipse.dataplane.domain.dataflow.DataFlowStatusMessage; |
|
33 | 34 | import org.eclipse.dataplane.domain.registration.DataPlaneRegistrationMessage; |
34 | 35 | import org.eclipse.dataplane.logic.OnCompleted; |
35 | 36 | import org.eclipse.dataplane.logic.OnPrepare; |
| 37 | +import org.eclipse.dataplane.logic.OnResume; |
36 | 38 | import org.eclipse.dataplane.logic.OnStart; |
37 | 39 | import org.eclipse.dataplane.logic.OnStarted; |
38 | 40 | import org.eclipse.dataplane.logic.OnSuspend; |
@@ -77,6 +79,7 @@ public class Dataplane { |
77 | 79 | private OnStart onStart = dataFlow -> Result.failure(new UnsupportedOperationException("onStart is not implemented")); |
78 | 80 | private OnTerminate onTerminate = dataFlow -> Result.failure(new UnsupportedOperationException("onTerminate is not implemented")); |
79 | 81 | private OnSuspend onSuspend = dataFlow -> Result.failure(new UnsupportedOperationException("onSuspend is not implemented")); |
| 82 | + private OnResume onResume = dataFlow -> Result.failure(new UnsupportedOperationException("onResume is not implemented")); |
80 | 83 | private OnStarted onStarted = dataFlow -> Result.failure(new UnsupportedOperationException("onStarted is not implemented")); |
81 | 84 | private OnCompleted onCompleted = dataFlow -> Result.failure(new UnsupportedOperationException("onCompleted is not implemented")); |
82 | 85 |
|
@@ -193,6 +196,24 @@ public Result<Void> suspend(String flowId, DataFlowSuspendMessage message) { |
193 | 196 | .map(it -> null); |
194 | 197 | } |
195 | 198 |
|
| 199 | + public Result<DataFlowStatusMessage> resume(String flowId, DataFlowResumeMessage message) { |
| 200 | + return dataFlowStore.findById(flowId) |
| 201 | + .map(dataFlow -> { |
| 202 | + if (message.dataAddress() != null) { |
| 203 | + dataFlow.setDataAddress(message.dataAddress()); |
| 204 | + } |
| 205 | + return dataFlow; |
| 206 | + }) |
| 207 | + .compose(onResume::action) |
| 208 | + .compose(dataFlow -> { |
| 209 | + dataFlow.transitionToStarted(); |
| 210 | + |
| 211 | + var response = new DataFlowStatusMessage(id, flowId, dataFlow.getState().name(), dataFlow.getDataAddress(), null); |
| 212 | + |
| 213 | + return save(dataFlow).map(it -> response); |
| 214 | + }); |
| 215 | + } |
| 216 | + |
196 | 217 | public Result<Void> terminate(String dataFlowId, DataFlowTerminateMessage message) { |
197 | 218 | return dataFlowStore.findById(dataFlowId) |
198 | 219 | .map(dataFlow -> { |
@@ -443,6 +464,11 @@ public Builder onSuspend(OnSuspend onSuspend) { |
443 | 464 | return this; |
444 | 465 | } |
445 | 466 |
|
| 467 | + public Builder onResume(OnResume onResume) { |
| 468 | + dataplane.onResume = onResume; |
| 469 | + return this; |
| 470 | + } |
| 471 | + |
446 | 472 | public Builder onTerminate(OnTerminate onTerminate) { |
447 | 473 | dataplane.onTerminate = onTerminate; |
448 | 474 | return this; |
|
0 commit comments