/// <summary>
 /// Disables logger.
 /// </summary>
 public static void DisableLogger()
 {
     lock (_logWriterLocker)
     {
         ReindexerBinding.reindexer_disable_logger();//if we free previous delegate before disabling, gc may collect before enabling.
         _logWriter = null;
     }
 }
        private static LogWriterAction _logWriter; //we must pin the delegate before informing to reindexer, so we keep a reference to it, so gc won't collect it.

        /// <summary>
        /// Enables logger and send internal reindexer logs to <paramref name="logWriterAction"/>.
        /// </summary>
        /// <param name="logWriterAction">Action to send logs</param>
        public static void EnableLogger(LogWriterAction logWriterAction)
        {
            lock (_logWriterLocker)
            {
                ReindexerBinding.reindexer_disable_logger(); //if we free previous delegate before disabling, gc may collect before enabling.
                _logWriter = logWriterAction;
                ReindexerBinding.reindexer_enable_logger(_logWriter);
            }
        }
        public void InitReindexer()
        {
            _rx = ReindexerBinding.init_reindexer();
            Assert.AreNotEqual(UIntPtr.Zero, _rx);

            _logWriter = new LogWriterAction(Log);
            ReindexerBinding.reindexer_enable_logger(_logWriter);
            Connect();
        }