/// <summary> /// Sets the log callback, this will be invoked every time a log is written in MAMA. /// </summary> /// <param name="callback"> /// The callback to invoke. /// </param> public static void setLogCallback(MamaLogFileCallback2 callback) { // Dispose the old callback wrapper if (m_logFileCbWrapper != null) { ((IDisposable)m_logFileCbWrapper).Dispose(); m_logFileCbWrapper = null; } // Null is allowed to clear the callback if (callback == null) { // Call the native function with null MamaWrapper.CheckResultCode(NativeMethods.mama_setLogCallback2(null)); } else { // Create a new callback wrapper m_logFileCbWrapper = new MamaCallbackWrapper <MamaLogFileCallback2, LogFileCallbackDelegate>( callback, null, new LogFileCallbackDelegate(onNativeLogCallback)); // Call the native function MamaWrapper.CheckResultCode(NativeMethods.mama_setLogCallback2((LogFileCallbackDelegate)m_logFileCbWrapper.NativeDelegate)); } }
/// <summary> /// This handler is called by the C layer whenever a log comes in, it will /// invoke the managed object. /// </summary> /// <param name="level"> /// The log level. /// </param> /// <param name="message"> /// The log message. /// </param> public static void onNativeLogCallback(int level, string message) { // Get the callback from the static member variable MamaLogFileCallback2 callback = (MamaLogFileCallback2)m_logFileCbWrapper.Callback; if (callback != null) { // Invoke the delegate callback.onLog((MamaLogLevel)level, message); } }
/// <summary> /// Sets the log callback, this will be invoked every time a log is written in MAMA. /// </summary> /// <param name="callback"> /// The callback to invoke. /// </param> public static void setLogCallback(MamaLogFileCallback2 callback) { // Dispose the old callback wrapper if (m_logFileCbWrapper != null) { ((IDisposable)m_logFileCbWrapper).Dispose(); m_logFileCbWrapper = null; } // Null is allowed to clear the callback if (callback == null) { // Call the native function with null MamaWrapper.CheckResultCode(NativeMethods.mama_setLogCallback2(null)); } else { // Create a new callback wrapper m_logFileCbWrapper = new MamaCallbackWrapper<MamaLogFileCallback2, LogFileCallbackDelegate>( callback, null, new LogFileCallbackDelegate(onNativeLogCallback)); // Call the native function MamaWrapper.CheckResultCode(NativeMethods.mama_setLogCallback2((LogFileCallbackDelegate)m_logFileCbWrapper.NativeDelegate)); } }