@@ -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 }
0 commit comments