Chat errors will no longer prevent the service from starting

This commit is contained in:
Cyberboss
2017-06-10 15:51:03 -04:00
parent c831ad084d
commit 27cb29c43d
+33 -21
View File
@@ -55,19 +55,27 @@ namespace TGServerService
{
if (info == null)
info = ProviderInfo();
switch (info.Provider)
{
case TGChatProvider.Discord:
ChatProvider = new TGDiscordChatProvider(info);
break;
case TGChatProvider.IRC:
ChatProvider = new TGIRCChatProvider(info);
break;
default:
TGServerService.WriteLog(String.Format("Invalid chat provider: {0}", info.Provider), EventLogEntryType.Error);
break;
}
currentProvider = info.Provider;
try
{
switch (info.Provider)
{
case TGChatProvider.Discord:
ChatProvider = new TGDiscordChatProvider(info);
break;
case TGChatProvider.IRC:
ChatProvider = new TGIRCChatProvider(info);
break;
default:
TGServerService.WriteLog(String.Format("Invalid chat provider: {0}", info.Provider), EventLogEntryType.Error);
break;
}
}
catch (Exception e)
{
TGServerService.WriteLog(String.Format("Failed to start chat provider {0}! Error: {1}", info.Provider, e.ToString()), EventLogEntryType.Error);
return;
}
ChatProvider.OnChatMessage += ChatProvider_OnChatMessage;
if (Properties.Settings.Default.ChatEnabled)
{
@@ -117,7 +125,11 @@ namespace TGServerService
void DisposeChat()
{
ChatProvider.Dispose();
if (ChatProvider != null)
{
ChatProvider.Dispose();
ChatProvider = null;
}
}
//Do stuff with words that were spoken to us
@@ -170,7 +182,7 @@ namespace TGServerService
if (!enable && Connected())
ChatProvider.Disconnect();
else if (enable && !Connected())
return ChatProvider.Connect();
return ChatProvider != null ? ChatProvider.Connect() : "Null chat provider!";
return null;
}
}
@@ -292,7 +304,7 @@ namespace TGServerService
Config.ChatProviderEntropy = Convert.ToBase64String(entropy, 0, entropy.Length);
Config.ChatProviderData = Convert.ToBase64String(ciphertext, 0, ciphertext.Length);
if (info.Provider == currentProvider)
if (ChatProvider != null && info.Provider == currentProvider)
return ChatProvider.SetProviderInfo(info);
else
{
@@ -329,7 +341,7 @@ namespace TGServerService
{
var oldchannels = Config.ChatChannels;
var si = new StringCollection();
foreach(var c in channels)
foreach (var c in channels)
{
var Res = SanitizeChannelName(c);
if (Res != null)
@@ -344,15 +356,15 @@ namespace TGServerService
Config.ChatAdminChannel = adminchannel;
if (channels != null && Connected())
ChatProvider.SetChannels(CollectionToArray(Config.ChatChannels), null);
}
}
}
//public api
public bool Connected()
{
lock (ChatLock)
{
return ChatProvider.Connected();
return ChatProvider != null ? ChatProvider.Connected() : false;
}
}
@@ -363,7 +375,7 @@ namespace TGServerService
{
if (!Properties.Settings.Default.ChatEnabled)
return "Chat is disabled!";
return ChatProvider.Reconnect();
return ChatProvider != null ? ChatProvider.Reconnect() : "Null chat provider!";
}
}
@@ -372,7 +384,7 @@ namespace TGServerService
{
lock (ChatLock)
{
return ChatProvider.SendMessage(msg, adminOnly);
return ChatProvider != null ? ChatProvider.SendMessage(msg, adminOnly) : "Null chat provider!";
}
}
}