X: NFC - Refactoring and additional logging
This commit is contained in:
@@ -76,43 +76,37 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
"NenjimHub start has already been attempted");
|
||||
}
|
||||
|
||||
Map<NenjimComponentId, ProcessConstructor> processConstructors =
|
||||
createProcessConstructorCatalogue();
|
||||
NenjimHubConfiguration configuration =
|
||||
NenjimHubConfigurationParser.parse(
|
||||
HUB_CONFIGURATION_PATH,
|
||||
selectableProcessIds(processConstructors),
|
||||
REGISTRY_SERVICE_ID,
|
||||
JOURNAL_SERVICE_ID);
|
||||
Map<NenjimComponentId, ProcessConstructor> processConstructors = createProcessConstructorCatalogue();
|
||||
Set<NenjimComponentId> knownProcessIds = selectableProcessIds(processConstructors);
|
||||
|
||||
log.info("Initializing Nenjim Registry...");
|
||||
NenjimRegistryAssembly registryAssembly =
|
||||
NenjimRegistryAssembly.create();
|
||||
registryService =
|
||||
registryAssembly.registryService();
|
||||
log.debug("Parsing Nenjim configuration...");
|
||||
configuration = NenjimHubConfigurationParser.parse(
|
||||
HUB_CONFIGURATION_PATH,
|
||||
knownProcessIds,
|
||||
REGISTRY_SERVICE_ID,
|
||||
JOURNAL_SERVICE_ID
|
||||
);
|
||||
|
||||
log.debug("Initializing Nenjim Registry...");
|
||||
NenjimRegistryAssembly registryAssembly = NenjimRegistryAssembly.create();
|
||||
registryService = registryAssembly.registryService();
|
||||
NenjimProcess registryProcess = registryAssembly.registryProcess();
|
||||
registryServiceManager = registryAssembly.registryServiceManager();
|
||||
|
||||
registryProcess.start();
|
||||
registryServiceManager.registerComponent(
|
||||
REGISTRY_SERVICE_ID,
|
||||
registryService);
|
||||
registryService
|
||||
);
|
||||
recordStartedProcess(REGISTRY_SERVICE_ID);
|
||||
|
||||
log.info("Initializing passive Nenjim components...");
|
||||
log.debug("Initializing passive Nenjim components...");
|
||||
initializeAndRegisterPassiveComponents(registryServiceManager);
|
||||
|
||||
log.info("Constructing and starting configured Nenjim processes...");
|
||||
for (NenjimComponentId componentId
|
||||
: configuration.autoStartProcessIds().subList(
|
||||
1,
|
||||
configuration.autoStartProcessIds().size())) {
|
||||
constructRegisterAndStartProcess(
|
||||
componentId,
|
||||
processConstructors);
|
||||
}
|
||||
log.info("Auto-starting configured Nenjim processes...");
|
||||
autoStartProcesses(processConstructors);
|
||||
|
||||
System.out.println("Done - Now online!");
|
||||
log.info("Done - Now online!");
|
||||
|
||||
waitForAndShutdown();
|
||||
}
|
||||
@@ -123,6 +117,20 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
return List.copyOf(startedProcessIds);
|
||||
}
|
||||
|
||||
private void autoStartProcesses(Map<NenjimComponentId, ProcessConstructor> processConstructors)
|
||||
throws Exception {
|
||||
List<NenjimComponentId> autoStartProcessIds = configuration
|
||||
.autoStartProcessIds()
|
||||
.subList(1, configuration.autoStartProcessIds().size());
|
||||
|
||||
for (NenjimComponentId componentId : autoStartProcessIds) {
|
||||
constructRegisterAndStartProcess(
|
||||
componentId,
|
||||
processConstructors
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private NenjimProcess constructJournalProcess() {
|
||||
JournalServiceAssembly journalAssembly =
|
||||
JournalServiceAssembly.create(JOURNAL_ROOT);
|
||||
@@ -132,12 +140,17 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
|
||||
private void initializeAndRegisterPassiveComponents(
|
||||
NenjimRegistryServiceManager registryServiceManager) {
|
||||
initializeBuildingBlocks(registryServiceManager);
|
||||
log.debug("Initializing components...");
|
||||
initializeComponents(registryServiceManager);
|
||||
|
||||
log.debug("Initializing price sources...");
|
||||
initializePriceSources(registryServiceManager);
|
||||
|
||||
log.debug("Initializing passive services...");
|
||||
initializePassiveServices(registryServiceManager);
|
||||
}
|
||||
|
||||
private void initializeBuildingBlocks(
|
||||
private void initializeComponents(
|
||||
NenjimRegistryServiceManager registryServiceManager) {
|
||||
objectCache = new ObjectCacheImpl();
|
||||
registryServiceManager.registerComponent(OBJECT_CACHE_ID, objectCache);
|
||||
@@ -359,33 +372,20 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
return Map.ofEntries(
|
||||
Map.entry(JOURNAL_SERVICE_ID, this::constructJournalProcess),
|
||||
Map.entry(TICKER_SERVICE_ID, this::constructTickerProcess),
|
||||
Map.entry(
|
||||
JUPITER_PERPS_ALARM_ID,
|
||||
this::constructJupiterPerpsAlarmProcess),
|
||||
Map.entry(
|
||||
EVELYN_SERVICE_PROD_ID,
|
||||
this::constructEvelynProdProcess),
|
||||
Map.entry(
|
||||
EVELYN_SERVICE_TEST_ID,
|
||||
this::constructEvelynTestProcess),
|
||||
Map.entry(
|
||||
EVELYN_IOU_BURNER_PROD_ID,
|
||||
this::constructEvelynIOUBurnerProdProcess),
|
||||
Map.entry(
|
||||
JAVAFX_RUNTIME_SERVICE_ID,
|
||||
this::constructJavaFxRuntimeProcess),
|
||||
Map.entry(
|
||||
EVELYN_MISSION_CONTROL_ID,
|
||||
this::constructMissionControlProcess),
|
||||
Map.entry(
|
||||
PROCESS_MANAGER_ID,
|
||||
this::constructProcessManagerProcess));
|
||||
Map.entry(JUPITER_PERPS_ALARM_ID, this::constructJupiterPerpsAlarmProcess),
|
||||
Map.entry(EVELYN_SERVICE_PROD_ID, this::constructEvelynProdProcess),
|
||||
Map.entry(EVELYN_SERVICE_TEST_ID, this::constructEvelynTestProcess),
|
||||
Map.entry(EVELYN_IOU_BURNER_PROD_ID, this::constructEvelynIOUBurnerProdProcess),
|
||||
Map.entry(JAVAFX_RUNTIME_SERVICE_ID, this::constructJavaFxRuntimeProcess),
|
||||
Map.entry(EVELYN_MISSION_CONTROL_ID, this::constructMissionControlProcess),
|
||||
Map.entry(PROCESS_MANAGER_ID, this::constructProcessManagerProcess)
|
||||
);
|
||||
}
|
||||
|
||||
private static Set<NenjimComponentId> selectableProcessIds(
|
||||
Map<NenjimComponentId, ProcessConstructor> processConstructors) {
|
||||
Set<NenjimComponentId> processIds =
|
||||
new HashSet<>(processConstructors.keySet());
|
||||
Map<NenjimComponentId, ProcessConstructor> processConstructors
|
||||
) {
|
||||
Set<NenjimComponentId> processIds = new HashSet<>(processConstructors.keySet());
|
||||
processIds.add(REGISTRY_SERVICE_ID);
|
||||
return Set.copyOf(processIds);
|
||||
}
|
||||
@@ -416,6 +416,8 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
+ "' is not registered as "
|
||||
+ NenjimProcess.class.getName());
|
||||
}
|
||||
|
||||
log.info("Starting process '" + componentId.value() + "'...");
|
||||
process.start();
|
||||
recordStartedProcess(componentId);
|
||||
}
|
||||
@@ -533,4 +535,7 @@ public final class NenjimHubImpl implements NenjimHub {
|
||||
private JavaFxRuntimeService javaFxRuntimeService;
|
||||
private EvelynMissionControl missionControl;
|
||||
private NenjimProcessManager processManager;
|
||||
|
||||
// Internal state
|
||||
private NenjimHubConfiguration configuration;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user