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();
}