Schumix.Irc.Network.Opcodes C# (CSharp) Method

Opcodes() private method

Ez a függvény kezeli azt IRC adatai és az opcedes-eket.
Opcodes: Az IRC-ről jövő funkciók, kódok.
private Opcodes ( ) : void
return void
        private void Opcodes()
        {
            Log.Notice("Opcodes", sLConsole.GetString("Successfully started the thread."));
            _timeropcode.Interval = _ReconnectDI;
            _timeropcode.Elapsed += HandleOpcodesTimer;
            _timeropcode.Enabled = true;
            _timeropcode.Start();
            Log.Notice("Opcodes", sLConsole.GetString("Started the irc data receiving."));

            while(true)
            {
                try
                {
                    if((SchumixBase.ExitStatus || sIrcBase.ReloadStatus) && NetworkQuit)
                        break;

                    if(!Connected || reader.IsNull())
                    {
                        Thread.Sleep(1000);
                        continue;
                    }

                    string IrcMessage;
                    if((IrcMessage = reader.ReadLine()).IsNull())
                    {
                        Log.Error("Opcodes", sLConsole.GetString("Do not going data from irc server!"));

                        if(sMyChannelInfo.FSelect(IFunctions.Reconnect) && !SchumixBase.ExitStatus && !sIrcBase.ReloadStatus)
                        {
                            if(ReconnectNumber > 5)
                                _timeropcode.Interval = _ReconnectNI;

                            if(Connected)
                            {
                                ReconnectNumber++;
                                ReConnect();
                            }

                            continue;
                        }
                    }

                    LastOpcode = DateTime.Now;

                    if(_enabled)
                    {
                        _timeropcode.Interval = _ReconnectDI;
                        ReconnectNumber = 0;
                        _enabled = false;
                    }

            #if DEBUG
                    _debuglog.LogInFile(IrcMessage);
            #endif
                    Task.Factory.StartNew(() => HandleIrcCommand(IrcMessage), _cts.Token);
                    Thread.Sleep(100);
                }
                catch(IOException)
                {
                    if(sMyChannelInfo.FSelect(IFunctions.Reconnect) && !SchumixBase.ExitStatus && !sIrcBase.ReloadStatus)
                    {
                        if(ReconnectNumber > 5)
                            _timeropcode.Interval = _ReconnectNI;

                        if(Connected)
                        {
                            ReconnectNumber++;
                            ReConnect();
                        }

                        continue;
                    }
                }
                catch(Exception e)
                {
                    Log.Error("Opcodes", sLConsole.GetString("Failure details: {0}"), e.Message);

                    if((SchumixBase.ExitStatus || sIrcBase.ReloadStatus) && NetworkQuit)
                        break;
                    else
                        Thread.Sleep(1000);
                }
            }

            _timeropcode.Enabled = false;
            _timeropcode.Elapsed -= HandleOpcodesTimer;
            _timeropcode.Stop();

            try
            {
                sIgnoreNickName.RemoveConfig();
                sIgnoreChannel.RemoveConfig();
                sIgnoreAddon.RemoveConfig();
                DisConnect();
            }
            catch(Exception e)
            {
                Log.Error("Opcodes", sLConsole.GetString("Failure details: {0}"), e.Message);
            }

            Shutdown = true;
            Dispose();
        }