private static bool ConnectorInitialize(string path, short logLevel) { var pPath = MarshalUtf8.StringToHGlobalUtf8(path); var msg = PtrToDescr(Initialize(pPath, logLevel)); Marshal.FreeHGlobal(pPath); Console.Out.WriteLine(msg != null ? $"failed to init connector {msg}" : $"Initialize() OK"); return(msg == null); }
//-------------------------------------------------------------------------------- public static Str ConnectorSendCommand(string command) { var pData = MarshalUtf8.StringToHGlobalUtf8(command); var msg = PtrToDescr(SendCommand(pData)); Marshal.FreeHGlobal(pData); return(new Str { Txt = msg }); }
private static string PtrToDescr(IntPtr pResult) { if (IntPtr.Zero == pResult) { return(null); } var result = MarshalUtf8.PtrToStringUtf8(pResult); FreeMemory(pResult); return(result); }
public static bool Init(Func <string, string> callback) { CallBackDelegate predicate = data => { var result = MarshalUtf8.PtrToStringUtf8(data); FreeMemory(data); callback(result); return(true); }; var CallbackHandle = GCHandle.Alloc(predicate); if (!SetCallback(predicate)) { throw new Exception("Cant set callback"); } return(ConnectorInitialize(Path, 3)); }