public async Task <TurnData[]> ProcessAsync(PlayData[] playDataArray) { if (playDataArray == null) { throw new ArgumentNullException(); } var selectedTurnArr = new TurnData[0]; await Task.Run(() => { selectedTurnArr = Filter(playDataArray); }); return(selectedTurnArr); }
protected PlayData MapToPlayData(XmlElement xmlElement) { _ = xmlElement ?? throw new ArgumentNullException(); if (xmlElement.Name != "play-data") { throw new ArgumentException(); } var roundDataList = new List <RoundData>(); foreach (XmlElement round in xmlElement) { var turnDataList = new List <TurnData>(); foreach (XmlElement turn in round) { if (turn.ChildNodes.Count < 5) { throw new InvalidOperationException(""); } var playerId = turn.GetAttribute("playerId"); var facedUpCardsElm = turn["faced-up-cards"] ?? throw new Exception(); var handElm = turn["hand"] ?? throw new Exception(); var prevTurnsElm = turn["prev-turns"] ?? throw new Exception(); var activeCardsElm = turn["active-cards"] ?? throw new Exception(); var inactiveCardsElm = turn["inactive-cards"] ?? throw new Exception(); var turnData = new TurnData( playerId, facedUpCardsElm.InnerXml, handElm.InnerXml, prevTurnsElm.InnerXml, activeCardsElm.InnerXml, inactiveCardsElm.InnerXml); turnDataList.Add(turnData); } roundDataList.Add(new RoundData(turnDataList.ToArray())); } return(new PlayData(roundDataList.ToArray())); }