예제 #1
0
        /// <summary>
        /// Internal proxy function that calls any registered application log
        /// event handlers.
        ///
        /// WARNING: This method is used more-or-less directly by native code,
        ///          do not modify its type signature.
        /// </summary>
        /// <param name="pUserData">
        /// The extra data associated with this message, if any.
        /// </param>
        /// <param name="errorCode">
        /// The error code associated with this message.
        /// </param>
        /// <param name="pMessage">
        /// The message string to be logged.
        /// </param>
        private static void LogCallback(
            IntPtr pUserData,
            int errorCode,
            IntPtr pMessage
            )
        {
            bool enabled;
            SQLiteLogEventHandler handlers;

            lock (syncRoot)
            {
                enabled = _enabled;

                if (_handlers != null)
                {
                    handlers = _handlers.Clone() as SQLiteLogEventHandler;
                }
                else
                {
                    handlers = null;
                }
            }

            if (enabled && (handlers != null))
            {
                handlers(null, new LogEventArgs(pUserData, errorCode,
                                                SQLiteBase.UTF8ToString(pMessage, -1), null));
            }
        }