@@ -33,6 +33,7 @@ public class ExternalProcessInstance implements Instance {
3333
3434 private final ConcurrentMap <String , State > aliasToState ;
3535 private final ConcurrentMap <String , CompletableFuture <?>> aliasToInitializationTask ;
36+ private Connector connector ;
3637 private Server server ;
3738 private final File scriptFile ;
3839 private MessageReader reader ;
@@ -79,14 +80,19 @@ public ExternalProcessInstance(File scriptFile, ConcurrentMap<String, State> ali
7980 }, PERIODS_OF_HEALTH_CHECK_SECONDS , PERIODS_OF_HEALTH_CHECK_SECONDS , TimeUnit .SECONDS );
8081 }
8182
83+ public ExternalProcessInstance (File scriptFile , ConcurrentMap <String , State > aliasToState , ConcurrentMap <String , CompletableFuture <?>> aliasToInitializationTask , CompletableFuture <Integer > pythonExitCode , Connector connector ) {
84+ this (scriptFile , aliasToState , aliasToInitializationTask , pythonExitCode );
85+ this .connector = connector ;
86+ }
87+
8288 @ Override
8389 public void run () {
8490 try {
8591 int port = Config .getTcpPort ();
8692 ProcessBuilder processBuilder = new ProcessBuilder ().command (Config .getPythonRuntime (), "-X utf8" , scriptFile .getAbsolutePath (), String .valueOf (port ));
8793 server = new LocalTcpSocketServer (port );
8894 runningProcess = processBuilder .start ();
89- service = Executors .newSingleThreadExecutor ( );
95+ service = Executors .newFixedThreadPool ( 2 );
9096 LogTracker .initExecutorService ();
9197 LogTracker .track (Log .LogLevel .INFO , runningProcess .getInputStream ());
9298 LogTracker .track (Log .LogLevel .ERROR , runningProcess .getErrorStream ());
@@ -122,7 +128,7 @@ public void run() {
122128 sendingEventToClientHandler , reqDataHandler , clientInitHandler ,
123129 new RegisterIndicatorHandler (aliasToState , eventLoop ), new AddPointIndicatorHandler (aliasToState , eventLoop ), new FinishedInitializationHandler (aliasToInitializationTask ),
124130 new ClientOffHandler (eventLoop ), new AddUiFieldHandler (aliasToState , eventLoop ),
125- new SendOrderHandler (aliasToState , eventLoop ), new UpdateOrderHandler (aliasToState , eventLoop ));
131+ new SendOrderHandler (aliasToState , eventLoop ), new UpdateOrderHandler (aliasToState , eventLoop ), new SubscribeToIndicatorHandler ( eventLoop , connector , service ) );
126132 eventLoop .setHandlerManager (handlerManager );
127133 reader = new DefaultMessageReader (server , incomeConverterManager , eventLoop );
128134 eventLoop .pushEvent (new ServerInitEvent ());
0 commit comments