33using OTAPI . UnifiedServerProcess . GlobalNetwork . Servers ;
44using ReLogic . OS ;
55using System . Diagnostics ;
6+ using System . Diagnostics . Metrics ;
67using System . Reflection ;
8+ using System . Threading . Tasks ;
79using UnifiedServerProcess ;
810
911namespace OTAPI . UnifiedServerProcess . GlobalNetwork
@@ -22,66 +24,49 @@ static void Main(string[] args) {
2224 Console . WriteLine ( @"---------------------------------------------------------------------------------------------------" ) ;
2325 Console . WriteLine ( @" Demonstration For Terraria v{0} & OTAPI v{1} " , version . TerrariaVersion , version . OTAPIVersion ) ;
2426 Console . WriteLine ( @"---------------------------------------------------------------------------------------------------" ) ;
25-
26-
27- Console . Write ( "[USP|Info] Global initialization started... " ) ;
28- var spinner = new ConsoleSpinner ( 100 ) ;
29- spinner . Start ( ) ;
30-
31- Stopwatch stopwatch = new ( ) ;
32- stopwatch . Start ( ) ;
33- SynchronizedGuard . Load ( ) ;
34- NetworkPatcher . Load ( ) ;
35- AppDomain . CurrentDomain . AssemblyResolve += ResolveHelpers . ResolveAssembly ;
36- Terraria . Program . SavePath = Platform . Get < IPathService > ( ) . GetStoragePath ( "Terraria" ) ;
37- Terraria . Main . SkipAssemblyLoad = true ;
38- GlobalInitializer . Initialize ( ) ;
39- stopwatch . Stop ( ) ;
40- spinner . Stop ( ) ;
41- Console . WriteLine ( $ "- done. (used { stopwatch . ElapsedMilliseconds : .00} ms)") ;
42-
43- Console . Write ( "[USP|Info] Creating server instances... " ) ;
44- spinner = new ConsoleSpinner ( 100 ) ;
45- spinner . Start ( ) ;
46- stopwatch . Restart ( ) ;
47-
48- int port = 7777 ;
49-
50- var server1 = new ServerContext ( "Server1" , TestWorlds . World_1 ) ;
51- var server2 = new ServerContext ( "Server2" , TestWorlds . World_2 ) ;
52-
53- var router = new Router ( port , server1 , [ server1 , server2 ] ) ;
54- var cmd = new CommandHandler ( router ) ;
55-
56- stopwatch . Stop ( ) ;
57- spinner . Stop ( ) ;
58- Console . WriteLine ( $ "- done. (used { stopwatch . ElapsedMilliseconds : .00} ms)") ;
59-
60- Task . Run ( ( ) => {
61- server1 . Program . LaunchGame ( args ) ;
62- } ) ;
63- Task . Run ( ( ) => {
64- server2 . Program . LaunchGame ( args ) ;
27+
28+ WorkRunner . RunTimedWork ( "Global initialization started..." , ( ) => {
29+ SynchronizedGuard . Load ( ) ;
30+ NetworkPatcher . Load ( ) ;
31+ AppDomain . CurrentDomain . AssemblyResolve += ResolveHelpers . ResolveAssembly ;
32+ Terraria . Program . SavePath = Platform . Get < IPathService > ( ) . GetStoragePath ( "Terraria" ) ;
33+ Terraria . Main . SkipAssemblyLoad = true ;
34+ GlobalInitializer . Initialize ( ) ;
6535 } ) ;
6636
37+ var ( server1 , server2 ) = WorkRunner . RunTimedWork ( "Creating server instances..." , ( ) => {
38+ var server1 = new ServerContext ( "Server1" , TestWorlds . World_1 ) ;
39+ var server2 = new ServerContext ( "Server2" , TestWorlds . World_2 ) ;
40+ return ( server1 , server2 ) ;
41+ } ) ;
6742
68- Console . Write ( "[USP|Info] Starting main servers... " ) ;
69- spinner = new ConsoleSpinner ( 100 ) ;
70- spinner . Start ( ) ;
71- stopwatch . Restart ( ) ;
43+ var ( router , cmdh ) = WorkRunner . RunTimedWork ( "Creating global network..." , ( ) => {
44+ var router = new Router ( 7777 , server1 , [ server1 , server2 ] ) ;
45+ var cmdh = new CommandHandler ( router ) ;
46+ return ( router , cmdh ) ;
47+ } ) ;
7248
73- router . Started += ( ) => {
74- stopwatch . Stop ( ) ;
75- spinner . Stop ( ) ;
76- Console . WriteLine ( $ "- done. (used { stopwatch . ElapsedMilliseconds : .00} ms)") ;
49+ WorkRunner . RunTimedWorkAsync ( "Starting main servers..." ,
50+ ( ) => {
51+ Task . Run ( ( ) => {
52+ server1 . Program . LaunchGame ( args ) ;
53+ } ) ;
54+ Task . Run ( ( ) => {
55+ server2 . Program . LaunchGame ( args ) ;
56+ } ) ;
57+ var tcs = new TaskCompletionSource ( ) ;
58+ router . Started += ( ) => tcs . SetResult ( ) ;
59+ return tcs ;
60+ } ,
61+ ( ) => {
7762 Console . WriteLine ( ) ;
7863 Console . WriteLine ( "[USP] Unified Server Process Launched successfully." ) ;
79- Console . WriteLine ( "[USP] Listening on port: {0}." , port ) ;
64+ Console . WriteLine ( "[USP] Listening on port: {0}." , router . ListenPort ) ;
8065 Console . WriteLine ( "[USP] Type 'help' for more information." ) ;
8166 Console . WriteLine ( ) ;
82- } ;
67+ } ) ;
8368
84- cmd . KeepReadingInput ( ) ;
69+ cmdh . KeepReadingInput ( ) ;
8570 }
8671 }
8772}
0 commit comments