// virtual to allow mocking protected internal virtual bool ProcessResponse(IConnection connection, string response) { if (connection == null) { throw new ArgumentNullException("connection"); } if (_initializationHandler == null) { throw new InvalidOperationException(Resources.Error_ProcessResponseBeforeStart); } connection.MarkLastMessage(); if (String.IsNullOrEmpty(response)) { return(false); } var shouldReconnect = false; try { var result = connection.JsonDeserializeObject <JObject>(response); if (!result.HasValues) { return(false); } if (result["I"] != null) { connection.OnReceived(result); return(false); } shouldReconnect = (int?)result["T"] == 1; var groupsToken = result["G"]; if (groupsToken != null) { connection.GroupsToken = (string)groupsToken; } var messages = result["M"] as JArray; if (messages != null) { connection.MessageId = (string)result["C"]; foreach (JToken message in (IEnumerable <JToken>)messages) { connection.OnReceived(message); } if ((int?)result["S"] == 1) { _initializationHandler.InitReceived(); } } } catch (Exception ex) { connection.OnError(ex); } return(shouldReconnect); }
// virtual to allow mocking protected internal virtual bool ProcessResponse(IConnection connection, string response) { if (connection == null) { throw new ArgumentNullException("connection"); } if (_initializationHandler == null) { throw new InvalidOperationException("Resources.Error_ProcessResponseBeforeStart"); } connection.MarkLastMessage(); if (String.IsNullOrEmpty(response)) { return(false); } var shouldReconnect = false; try { var result = JSON.Parse(response); if (result.IsEmpty) { return(false); } if (!result["I"].IsEmpty) { connection.OnReceived(result); return(false); } shouldReconnect = result["T"].AsInt == 1; var groupsToken = result["G"]; if (groupsToken != null) { connection.GroupsToken = groupsToken.AsString; } var messages = result["M"] as JSONArray; if (messages != null) { connection.MessageId = result["C"].AsString; foreach (var message in messages) { connection.OnReceived(message); } if (result["S"].AsInt == 1) { _initializationHandler.InitReceived(); } } } catch (Exception ex) { connection.OnError(ex); } return(shouldReconnect); }