From 3ce61cf38727db2f37a0e478182d2a73222c8a7c Mon Sep 17 00:00:00 2001 From: vnugent Date: Sat, 15 Apr 2023 01:58:55 -0400 Subject: Managed assembly loading overhaul --- lib/Plugins.Runtime/src/LivePlugin.cs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'lib/Plugins.Runtime/src/LivePlugin.cs') diff --git a/lib/Plugins.Runtime/src/LivePlugin.cs b/lib/Plugins.Runtime/src/LivePlugin.cs index ae4c90b..67cacb4 100644 --- a/lib/Plugins.Runtime/src/LivePlugin.cs +++ b/lib/Plugins.Runtime/src/LivePlugin.cs @@ -27,6 +27,7 @@ using System.Linq; using System.Reflection; using System.Text.Json; +using VNLib.Utils.IO; using VNLib.Utils.Extensions; using VNLib.Plugins.Attributes; @@ -109,18 +110,22 @@ namespace VNLib.Plugins.Runtime { return; } + //Merge configurations before passing to plugin - JsonDocument merged = hostConfig.Merge(pluginConf, "host", PluginType.Name); - try - { - //Invoke - configInit.Invoke(merged); - } - catch + using JsonDocument merged = hostConfig.Merge(pluginConf, "host", PluginType.Name); + + //Write the config to binary to pass it to the plugin + using VnMemoryStream vms = new(); + using (Utf8JsonWriter writer = new(vms)) { - merged.Dispose(); - throw; + merged.WriteTo(writer); } + + //Reset memstream + vms.Seek(0, System.IO.SeekOrigin.Begin); + + //Invoke + configInit.Invoke(vms.AsSpan()); } /// -- cgit