1 using GodotTools.IdeMessaging.Requests; 2 using GodotTools.IdeMessaging.Utils; 3 using Newtonsoft.Json; 4 5 namespace GodotTools.IdeMessaging 6 { 7 public abstract class ResponseAwaiter : NotifyAwaiter<Response> 8 { SetResult(MessageContent content)9 public abstract void SetResult(MessageContent content); 10 } 11 12 public class ResponseAwaiter<T> : ResponseAwaiter 13 where T : Response, new() 14 { SetResult(MessageContent content)15 public override void SetResult(MessageContent content) 16 { 17 if (content.Status == MessageStatus.Ok) 18 SetResult(JsonConvert.DeserializeObject<T>(content.Body)); 19 else 20 SetResult(new T {Status = content.Status}); 21 } 22 } 23 } 24