public Task <AVInstallation> GetAsync(CancellationToken cancellationToken) { AVInstallation cachedCurrent; cachedCurrent = CurrentInstallation; if (cachedCurrent != null) { return(Task <AVInstallation> .FromResult(cachedCurrent)); } return(taskQueue.Enqueue(toAwait => { return toAwait.ContinueWith(t => { object temp; AVClient.ApplicationSettings.TryGetValue("CurrentInstallation", out temp); var installationDataString = temp as string; AVInstallation installation = null; if (installationDataString != null) { var installationData = AVClient.DeserializeJsonString(installationDataString); installation = AVObject.CreateWithoutData <AVInstallation>(null); installation.HandleFetchResult(AVObjectCoder.Instance.Decode(installationData, AVDecoder.Instance)); } else { installation = AVObject.Create <AVInstallation>(); installation.SetIfDifferent("installationId", installationIdController.Get().ToString()); } CurrentInstallation = installation; return installation; }); }, cancellationToken)); }
public Task <ParseInstallation> GetAsync(CancellationToken cancellationToken) { ParseInstallation cachedCurrent; cachedCurrent = CurrentInstallation; if (cachedCurrent != null) { return(Task <ParseInstallation> .FromResult(cachedCurrent)); } return(taskQueue.Enqueue(toAwait => { return toAwait.ContinueWith(t => { object temp; ParseClient.ApplicationSettings.TryGetValue("CurrentInstallation", out temp); var installationDataString = temp as string; ParseInstallation installation = null; if (installationDataString != null) { var installationData = ParseClient.DeserializeJsonString(installationDataString); var state = ParseObjectCoder.Instance.Decode(installationData, ParseDecoder.Instance); installation = ParseObject.FromState <ParseInstallation>(state, "_Installation"); } else { installation = ParseObject.Create <ParseInstallation>(); installation.SetIfDifferent("installationId", installationIdController.Get().ToString()); } CurrentInstallation = installation; return installation; }); }, cancellationToken)); }