diff --git a/kissinference.cs b/kissinference.cs index 3d30a727f2d6836398ba875db578382dd119b1ca..0908cdc53f44d885b344694a7ba4cb12878c2b2c 100644 --- a/kissinference.cs +++ b/kissinference.cs @@ -17,9 +17,16 @@ public struct VersionFixed public static extern VersionFixed GetVersion(); } +public class InferenceException : Exception +{ + public InferenceException(){} + public InferenceException(string message): base(message){} + public InferenceException(string message, Exception inner): base(message, inner){} +} + public class Network { - public delegate void ResultDlg(float[] result); + public delegate void ResultDlg(float[] result, Network network); private struct Flight { @@ -39,7 +46,7 @@ public class Network Capi.free(result); var flight = inflight[data]; inflight.Remove(data); - flight.Callback(managedResult); + flight.Callback(managedResult, this); flight.Signal.Set(); } @@ -59,7 +66,10 @@ public class Network flight.Callback = callback; flight.Signal = new AutoResetEvent(false); inflight.Add(flightcounter, flight); - Capi.kiss_async_run_inference_complex(ref net, spectra.Real, spectra.Imaginary, flightcounter); + byte ret = Capi.kiss_async_run_inference_complex(ref net, spectra.Real, spectra.Imaginary, flightcounter); + if(ret == 0) + throw new InferenceException(getError()); + flightcounter += 1; return flight.Signal; } @@ -72,7 +82,9 @@ public class Network flight.Callback = callback; flight.Signal = new AutoResetEvent(false); inflight.Add(flightcounter, flight); - Capi.kiss_async_run_inference(ref net, data, flightcounter); + byte ret = Capi.kiss_async_run_inference(ref net, data, flightcounter); + if(ret == 0) + throw new InferenceException(getError()); flightcounter += 1; return flight.Signal; } @@ -120,7 +132,6 @@ public class Network return Capi.IntPtrToUtf8Array(net.outputLabels); } } - } public class Spectra diff --git a/program.cs b/program.cs index d5ec3defc5101e9cd4c27286d62fe833bf040930..eb5e0ec253a5fb8ceabf670b04da9576f2261299 100644 --- a/program.cs +++ b/program.cs @@ -9,15 +9,21 @@ public class Program Console.WriteLine("{0:F}+{1:F}i", spectra.Real[i], spectra.Imaginary[i]); } - public static void Result(float[] result) + public static void Result(float[] result, Kiss.Network network) { + Console.WriteLine("Thread id: {0:D}", System.Environment.CurrentManagedThreadId); + Console.WriteLine("Got result"); + string[] outputLabels = network.OutputLabels; + for(int i = 0; i < result.Length; ++i) + Console.WriteLine("{0:S}: {1:F}", outputLabels[i], result[i]); } public static int Main(string[] args) { Kiss.VersionFixed version = Kiss.VersionFixed.GetVersion(); Console.WriteLine("libkissinference version: {0:D}.{1:D}.{2:D}", version.Major, version.Minor, version.Patch); + Console.WriteLine("Thread id: {0:D}", System.Environment.CurrentManagedThreadId); var spectra = new Kiss.Spectra(Kiss.Utils.CreateRange(1, 10, 10, true), Kiss.Utils.CreateRange(1, 10, 10, true), Kiss.Utils.CreateRange(1, 10, 10, true)); @@ -43,7 +49,7 @@ public class Program try { - var net = new Kiss.Network(filename, true); + var net = new Kiss.Network(filename, false); Console.WriteLine("Input size: {0:D} OutputSize: {1:D} Purpose: {2:S} InputLabel: {3:S}", net.InputSize, net.OutputSize, net.Purpose, net.InputLabel); spectra.Resample(net.InputSize/2); Console.WriteLine("Expanded spectra:"); @@ -52,7 +58,7 @@ public class Program signal.WaitOne(); Console.WriteLine("Awaited"); } - catch (System.IO.FileLoadException e) + catch(System.IO.FileLoadException e) { Console.WriteLine(e.Message); }