Skip to content

Commit bcad19a

Browse files
NZSmartieqdot
authored andcommitted
Allow log manager for ButtplugJsonMessageParser to be optional
1 parent 7fe3fd1 commit bcad19a

4 files changed

Lines changed: 64 additions & 33 deletions

File tree

Buttplug.Core/ButtplugJsonMessageParser.cs

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public class ButtplugJsonMessageParser
2121
[NotNull]
2222
private readonly JsonSchema4 _schema;
2323

24-
public ButtplugJsonMessageParser([NotNull] IButtplugLogManager aLogManager)
24+
public ButtplugJsonMessageParser(IButtplugLogManager aLogManager = null)
2525
{
2626
_bpLogger = aLogManager.GetLogger(GetType());
27-
_bpLogger.Info($"Setting up {GetType().Name}");
27+
_bpLogger?.Info($"Setting up {GetType().Name}");
2828
IEnumerable<Type> allTypes;
2929

3030
// Some classes in the library may not load on certain platforms due to missing symbols.
@@ -51,11 +51,11 @@ public ButtplugJsonMessageParser([NotNull] IButtplugLogManager aLogManager)
5151
.Where(t => t != null && t.Namespace == "Buttplug.Core.Messages" && typeof(ButtplugMessage).IsAssignableFrom(t));
5252

5353
var enumerable = messageClasses as Type[] ?? messageClasses.ToArray();
54-
_bpLogger.Debug($"Message type count: {enumerable.Length}");
54+
_bpLogger?.Debug($"Message type count: {enumerable.Length}");
5555
_messageTypes = new Dictionary<string, Type>();
5656
enumerable.ToList().ForEach(aMessageType =>
5757
{
58-
_bpLogger.Debug($"- {aMessageType.Name}");
58+
_bpLogger?.Debug($"- {aMessageType.Name}");
5959
_messageTypes.Add(aMessageType.Name, aMessageType);
6060
});
6161

@@ -86,7 +86,7 @@ public ButtplugJsonMessageParser([NotNull] IButtplugLogManager aLogManager)
8686
[NotNull]
8787
public ButtplugMessage[] Deserialize(string aJsonMsg)
8888
{
89-
_bpLogger.Trace($"Got JSON Message: {aJsonMsg}");
89+
_bpLogger?.Trace($"Got JSON Message: {aJsonMsg}");
9090

9191
var res = new List<ButtplugMessage>();
9292
JArray msgArray;
@@ -96,20 +96,26 @@ public ButtplugMessage[] Deserialize(string aJsonMsg)
9696
}
9797
catch (JsonReaderException e)
9898
{
99-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, $"Not valid JSON: {aJsonMsg} - {e.Message}"));
99+
var err = new Error($"Not valid JSON: {aJsonMsg} - {e.Message}", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
100+
_bpLogger?.LogErrorMsg(err);
101+
res.Add(err);
100102
return res.ToArray();
101103
}
102104

103105
var errors = _schema.Validate(msgArray);
104106
if (errors.Any())
105107
{
106-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, "Message does not conform to schema: " + string.Join(", ", errors.Select(aErr => aErr.ToString()).ToArray())));
108+
var err = new Error("Message does not conform to schema: " + string.Join(", ", errors.Select(aErr => aErr.ToString()).ToArray()), ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
109+
_bpLogger?.LogErrorMsg(err);
110+
res.Add(err);
107111
return res.ToArray();
108112
}
109113

110114
if (!msgArray.Any())
111115
{
112-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, "No messages in array"));
116+
var err = new Error("No messages in array", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
117+
_bpLogger?.LogErrorMsg(err);
118+
res.Add(err);
113119
return res.ToArray();
114120
}
115121

@@ -119,14 +125,18 @@ public ButtplugMessage[] Deserialize(string aJsonMsg)
119125
{
120126
if (!o.Properties().Any())
121127
{
122-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, "No message name available"));
128+
var err = new Error("No message name available", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
129+
_bpLogger.LogErrorMsg(err);
130+
res.Add(err);
123131
continue;
124132
}
125133

126134
var msgName = o.Properties().First().Name;
127135
if (!_messageTypes.Keys.Any() || !_messageTypes.Keys.Contains(msgName))
128136
{
129-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, $"{msgName} is not a valid message class"));
137+
var err = new Error($"{msgName} is not a valid message class", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
138+
_bpLogger?.LogErrorMsg(err);
139+
res.Add(err);
130140
continue;
131141
}
132142

@@ -137,15 +147,19 @@ public ButtplugMessage[] Deserialize(string aJsonMsg)
137147
{
138148
var r = o[msgName].Value<JObject>();
139149
res.Add((ButtplugMessage)r.ToObject(_messageTypes[msgName], s));
140-
_bpLogger.Trace($"Message successfully parsed as {msgName} type");
150+
_bpLogger?.Trace($"Message successfully parsed as {msgName} type");
141151
}
142152
catch (InvalidCastException e)
143153
{
144-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, $"Could not create message for JSON {aJsonMsg}: {e.Message}"));
154+
var err = new Error($"Could not create message for JSON {aJsonMsg}: {e.Message}", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
155+
_bpLogger?.LogErrorMsg(err);
156+
res.Add(err);
145157
}
146158
catch (JsonSerializationException e)
147159
{
148-
res.Add(_bpLogger.LogErrorMsg(ButtplugConsts.SystemMsgId, ErrorClass.ERROR_MSG, $"Could not create message for JSON {aJsonMsg}: {e.Message}"));
160+
var err = new Error($"Could not create message for JSON {aJsonMsg}: {e.Message}", ErrorClass.ERROR_MSG, ButtplugConsts.SystemMsgId);
161+
_bpLogger?.LogErrorMsg(err);
162+
res.Add(err);
149163
}
150164
}
151165

@@ -157,7 +171,7 @@ public string Serialize([NotNull] ButtplugMessage aMsg)
157171
// Warning: Any log messages in this function must be localOnly. They will possibly recurse.
158172
var o = new JObject(new JProperty(aMsg.GetType().Name, JObject.FromObject(aMsg)));
159173
var a = new JArray(o);
160-
_bpLogger.Trace($"Message serialized to: {a.ToString(Formatting.None)}", true);
174+
_bpLogger?.Trace($"Message serialized to: {a.ToString(Formatting.None)}", true);
161175
return a.ToString(Formatting.None);
162176
}
163177

@@ -171,7 +185,7 @@ public string Serialize([NotNull] IEnumerable<ButtplugMessage> aMsgs)
171185
a.Add(o);
172186
}
173187

174-
_bpLogger.Trace($"Message serialized to: {a.ToString(Formatting.None)}", true);
188+
_bpLogger?.Trace($"Message serialized to: {a.ToString(Formatting.None)}", true);
175189
return a.ToString(Formatting.None);
176190
}
177191
}

Buttplug.Core/ButtplugLog.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,6 @@ public void Fatal(string aMsg, bool aLocalOnly)
7272
}
7373
}
7474

75-
public Error LogErrorMsg(uint aId, ErrorClass aCode, string aMsg)
76-
{
77-
Error(aMsg, false);
78-
return new Error(aMsg, aCode, aId);
79-
}
80-
81-
public Error LogWarnMsg(uint aId, ErrorClass aCode, string aMsg)
82-
{
83-
Warn(aMsg, false);
84-
return new Error(aMsg, aCode, aId);
85-
}
86-
8775
public event EventHandler<LogExceptionEventArgs> OnLogException;
8876

8977
public void LogException(Exception aEx, bool aLocalOnly = true, string aMsg = null)

Buttplug.Core/IButtplugLog.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,5 @@ public interface IButtplugLog
2525

2626
[CanBeNull]
2727
event EventHandler<LogExceptionEventArgs> OnLogException;
28-
29-
[NotNull]
30-
Error LogErrorMsg(uint aId, ErrorClass aCode, string aMsg);
31-
32-
[NotNull]
33-
Error LogWarnMsg(uint aId, ErrorClass aCode, string aMsg);
3428
}
3529
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using Buttplug.Core.Messages;
2+
using JetBrains.Annotations;
3+
4+
namespace Buttplug.Core
5+
{
6+
/// <summary>
7+
/// Extension methods for <see cref="IButtplugLog"/>.
8+
/// </summary>
9+
public static class IButtugLogExtenions
10+
{
11+
public static void LogErrorMsg(this IButtplugLog logger, Error error)
12+
{
13+
logger.Error(error.ErrorMessage, false);
14+
}
15+
16+
[NotNull]
17+
public static Error LogErrorMsg(this IButtplugLog logger, uint aId, Error.ErrorClass aCode, string aMsg)
18+
{
19+
logger.Error(aMsg, false);
20+
return new Error(aMsg, aCode, aId);
21+
}
22+
23+
public static void LogWarnMsg(this IButtplugLog logger, Error warning)
24+
{
25+
logger.Warn(warning.ErrorMessage, false);
26+
}
27+
28+
[NotNull]
29+
public static Error LogWarnMsg(this IButtplugLog logger, uint aId, Error.ErrorClass aCode, string aMsg)
30+
{
31+
logger.Warn(aMsg, false);
32+
return new Error(aMsg, aCode, aId);
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)