start method
Implementation
Future<void> start() async {
String version = config.version;
String host = config.server?.host ?? InternetAddress.loopbackIPv4.host;
int port = config.server?.port ?? DAEMON_DEFAULT_PORT;
String prefix = config.server?.prefix ?? DAEMON_DEFAULT_PREFIX;
String serverPrefix = SERVER_PREFIX;
String toolPrefix = TOOL_PREFIX;
HiveServerStorage hiveServerStorage = HiveServerStorage();
await hiveServerStorage.init();
HiveToolStorage hiveToolStorage = HiveToolStorage();
await hiveToolStorage.init();
HiveInternalServerStorage hiveInternalServerStorage =
HiveInternalServerStorage();
await hiveInternalServerStorage.init();
ManageService manageService = ManageService(version);
ServerService serverService = ServerService(
hiveServerStorage,
hiveInternalServerStorage,
);
ToolService toolService = ToolService(hiveToolStorage);
await toolService.refreshStatusesOnStartup(
autoRestore: config.autoRestore,
);
ManageController manageController = ManageController(manageService);
ServerController serverController = ServerController(
serverService,
manageService,
);
ToolController toolController = ToolController(
toolService,
serverService,
manageService,
);
manageRoutes(manageController);
serverRoutes(serverController);
toolRoutes(toolController);
final Router mainRouter = Router();
mainRouter.mount(prefix, manageRouter);
manageRouter.mount(serverPrefix, serverRouter);
manageRouter.mount(toolPrefix, toolRouter);
Pipeline pipeline = Pipeline();
Handler handler = pipeline
.addMiddleware(exceptionHandler())
.addMiddleware(logRequest())
.addHandler(mainRouter);
server = await serve(handler, host, port);
print(
"Start OpenTool Daemon: http://${server.address.host}:${server.port}$prefix",
);
}