diff --git a/server/Main.cs b/server/Main.cs index 94abfe7..a5b09d4 100644 --- a/server/Main.cs +++ b/server/Main.cs @@ -30,6 +30,8 @@ public class Main : BaseScript { private bool m_ticked; + private readonly Queue m_migrationQueue = new Queue(); + public Main() { Debug.WriteLine(typeof(MySql.Data.MySqlClient.MySqlConnection).Name); @@ -40,6 +42,23 @@ public Main() [EventHandler("onServerResourceStart")] public async void OnServerResourceStart(string resourceName) + { + m_migrationQueue.Enqueue(resourceName); + } + + [Tick] + public async Task RunTick() + { + m_ticked = true; + + while (m_migrationQueue.Count > 0) + { + await Delay(0); + await MigrateResource(m_migrationQueue.Dequeue()); + } + } + + private async Task MigrateResource(string resourceName) { var cs = GetConvar("mysql_connection_string", ""); var numMetaData = GetNumResourceMetadata(resourceName, "migration_file"); @@ -110,12 +129,6 @@ public async void OnServerResourceStart(string resourceName) } } - [Tick] - public void RunTick() - { - m_ticked = true; - } - private async Task LoadMigrationAssembly(string resourceName, string fileName) { var fileData = LoadResourceFile(resourceName, fileName); @@ -162,6 +175,7 @@ private async Task LoadMigrationAssembly(string resourceName, string f MetadataReference.CreateFromStream(migratorStream), MetadataReference.CreateFromStream(migratorStreamTwo) ) + .AddSyntaxTrees(syntaxTree); using (var peStream = new MemoryStream())