|
1 | 1 | package com.bookmap.api.rpc.server.addon; |
2 | 2 |
|
3 | 3 | import com.bookmap.addons.broadcasting.api.view.BroadcasterConsumer; |
| 4 | +import com.bookmap.addons.broadcasting.api.view.listeners.ProviderStatusListener; |
4 | 5 | import com.bookmap.addons.broadcasting.implementations.view.BroadcastFactory; |
5 | 6 | import com.bookmap.api.rpc.server.*; |
| 7 | +import com.bookmap.api.rpc.server.addon.listeners.broadcasting.RpcProviderStatusListener; |
6 | 8 | import com.bookmap.api.rpc.server.data.outcome.InstrumentDetachedEvent; |
7 | 9 | import com.bookmap.api.rpc.server.data.outcome.InstrumentInfoEvent; |
8 | 10 | import com.bookmap.api.rpc.server.data.outcome.OnIntervalEvent; |
9 | 11 | import com.bookmap.api.rpc.server.data.outcome.ServerOffEvent; |
10 | 12 | import com.bookmap.api.rpc.server.exceptions.FatalServerException; |
11 | 13 | import com.bookmap.api.rpc.server.log.PythonStackTraceTracker; |
12 | 14 | import com.bookmap.api.rpc.server.log.RpcLogger; |
| 15 | +import com.bookmap.api.rpc.server.services.ProviderStatusService; |
13 | 16 | import velox.api.layer1.Layer1ApiProvider; |
14 | 17 | import velox.api.layer1.annotations.*; |
15 | 18 | import velox.api.layer1.common.DirectoryResolver; |
@@ -122,11 +125,16 @@ public void initialize(String alias, InstrumentInfo instrumentInfo, Api api, Ini |
122 | 125 | Layer1ApiProvider provider = api.getProvider(); |
123 | 126 |
|
124 | 127 | ListenableHelper.addListeners(provider, this); |
125 | | - broadcaster = BroadcastFactory.getBroadcasterConsumer(provider, this.getClass().getSimpleName(), this.getClass()); |
| 128 | + |
| 129 | + EventLoop eventLoop = new EventLoop(); |
| 130 | + ProviderStatusService providerStatusService = new ProviderStatusService(eventLoop); |
| 131 | + ProviderStatusListener providerStatusListener = new RpcProviderStatusListener(providerStatusService); |
| 132 | + broadcaster = BroadcastFactory.getBroadcasterConsumer(provider, this.getClass().getSimpleName(), this.getClass(), providerStatusListener); |
| 133 | + providerStatusService.setBroadcaster(broadcaster); |
126 | 134 | connector = new Connector(broadcaster); |
127 | 135 |
|
128 | 136 | if (instance == null) { |
129 | | - instance = new ExternalProcessInstance(SCRIPT_FILE, ALIAS_TO_STATE, ALIAS_TO_INITIALIZATION_TASK, pythonExitCode, connector); |
| 137 | + instance = new ExternalProcessInstance(SCRIPT_FILE, ALIAS_TO_STATE, ALIAS_TO_INITIALIZATION_TASK, pythonExitCode, connector, eventLoop); |
130 | 138 | instance.run(); |
131 | 139 | } |
132 | 140 | this.initialState.instrumentApi.addIntervalListeners(this); |
|
0 commit comments