Example #1
0
        private async Task ProcessRequestUpdates(JObject response, int rid)
        {
            var request = RequestManager.GetRequest(rid);

            switch (request)
            {
            case ListRequest _:
                var listRequest = (ListRequest)request;
                var name        = listRequest.Path.Split('/').Last();
                var node        = new RemoteNode(name, null, listRequest.Path);
                node.FromSerialized(response["updates"].Value <JArray>());
                await Task.Run(() => listRequest.Callback(new ListResponse(_link, rid, listRequest.Path, node)));

                break;

            case SetRequest _:
                RequestManager.StopRequest(rid);
                break;

            case RemoveRequest _:
                RequestManager.StopRequest(rid);
                break;

            case InvokeRequest _:
                var invokeRequest = (InvokeRequest)request;
                var path          = invokeRequest.Path;
                var columns       = response.GetValue("columns") != null
                        ? response["columns"].Value <JArray>()
                        : new JArray();
                var updates = response.GetValue("updates") != null
                        ? response["updates"].Value <JArray>()
                        : new JArray();
                var meta  = response.GetValue("meta") != null ? response["meta"].Value <JObject>() : new JObject();
                var error = response.GetValue("error") != null ? response["error"].Value <JObject>() : new JObject();

                await Task.Run(() =>
                {
                    invokeRequest?.Callback(new InvokeResponse(_link, rid, path, columns, updates, meta,
                                                               error));
                });

                break;
            }
        }