Beispiel #1
0
        protected virtual void OnError(OnErrorEventArgs e)
        {
            OnErrorEventHandler[] handlers = null;
            Monitor.Enter(_errorHandlers);
            try
            {
                if (_errorHandlers.Count > 0)
                {
                    handlers = new OnErrorEventHandler[_errorHandlers.Count];
                    _errorHandlers.CopyTo(handlers, 0);
                }
            }
            finally
            {
                Monitor.Exit(_errorHandlers);
            }

            if (handlers != null)
            {
                foreach (OnErrorEventHandler handler in handlers)
                {
                    if (handler != null)
                    {
                        AsyncHelper.FireAndForget(handler, this, e);
                    }
                }
            }
        }
        public ExtendedEventsReader(string logFilePath,
                                    OnReadEventHandler onReadEvent,
                                    OnReadMetadataHandler onReadMetadata,
                                    BeforeReadFileHandler beforeReadFile,
                                    AfterReadFileHandler afterReadFile,
                                    OnErrorEventHandler onError)
        {
            OnReadMetadata = onReadMetadata;
            OnReadEvent    = onReadEvent;
            BeforeReadFile = beforeReadFile;
            AfterReadFile  = afterReadFile;

            if (File.GetAttributes(logFilePath).HasFlag(FileAttributes.Directory))
            {
                _logFileDirectoryPath         = logFilePath;
                _logFileSourcePathIsDirectory = true;
                UpdateEventLogFilesFromDirectory();
            }
            else
            {
                _logFileSourcePathIsDirectory = false;
                _logFilesWithData             = new[] { logFilePath };
                _logFileDirectoryPath         = new FileInfo(_logFilesWithData[0]).Directory?.FullName;
            }
        }
Beispiel #3
0
    private void OnKcpError(KChannel channel, ErrorCode error)
    {
        Log.Error($"error code:{error}");

        //兼容旧版本时,不考虑是否可链接成功
        //if (error == ErrorCode.ERR_KcpCantConnect)
        //{
        //    if (tcs.Task.IsCompleted)
        //    {
        //        Log.Error("OnKcpError task is completed.");
        //        return;
        //    }

        //    tcs.SetResult(error);

        //    Shutdown();
        //    OnErrorEventHandler?.Invoke(error);
        //}
        if (error == ErrorCode.ERR_SocketError)
        {
            if (!tcs.Task.IsCompleted)
            {
                tcs.SetResult(error);
            }

            Shutdown();
            OnErrorEventHandler?.Invoke(error);
        }
        else
        {
            //非指定错误,执行重连
            Shutdown();
            Reconnect();
        }
    }
Beispiel #4
0
        private static void ExecuteCommand(NetworkStream stream, List <byte> container, bool AsyncExecution,
                                           OnMessageEventHandler onMessage, OnErrorEventHandler onError)
        {
begin:
            for (var i = 0; i < container.Count - 1; i++)
            {
                if (container[i] == 0x0d && container[i + 1] == 0x0a)
                {
                    if (onMessage != null)
                    {
                        var command = Encoding.UTF8.GetString(container.ToArray(), 0, i);
                        if (AsyncExecution)
                        {
                            ThreadPool.QueueUserWorkItem(h => ExecuteMessage(stream, command, onMessage, onError));
                        }
                        else
                        {
                            ExecuteMessage(stream, command, onMessage, onError);
                        }
                    }
                    container.RemoveRange(0, i + 2);
                    goto begin;
                }
            }
        }
Beispiel #5
0
 private static void ExecuteMessage(NetworkStream stream, string command,
                                    OnMessageEventHandler onMessage, OnErrorEventHandler onError)
 {
     try
     {
         onMessage(stream, command);
     }
     catch (Exception ex)
     {
         if (onError != null)
         {
             onError(stream, ex);
         }
     }
 }
 /// <summary>
 /// Uruchom zdarzenie OnError w obserwowanych katalogu
 /// Run the OnError event in the watch directory
 /// </summary>
 public virtual void OnError(object source, ErrorEventArgs e)
 {
     // Specify what is error.
     OnErrorEventHandler?.Invoke(source, e);
 }
Beispiel #7
0
 /// <summary>
 /// 读取对方传送的数据,分隔为一个或者多个命令行(以换行回车为结束符号),然后回调onMessage委托方法。
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="h"></param>
 /// <param name="buffer"></param>
 /// <param name="container"></param>
 /// <param name="AsyncExecution"></param>
 /// <param name="onMessage"></param>
 /// <param name="onError"></param>
 internal static void ExecuteRead(NetworkStream stream, IAsyncResult h, byte[] buffer, List <byte> container,
                                  bool AsyncExecution, OnMessageEventHandler onMessage, OnErrorEventHandler onError)
 {
     try
     {
         var len = stream.EndRead(h);
         for (var i = 0; i < len; i++)
         {
             container.Add(buffer[i]);
         }
         ExecuteCommand(stream, container, AsyncExecution, onMessage, onError);
     }
     catch (Exception ex)
     {
         if (onError != null)
         {
             onError(stream, ex);
         }
     }
 }