public IObservable <PortableUnit> SaveJsonAsync <T>(string file, T data) where T : class { return(ObservableEx.DeferredStart( () => { try { lock (this.syncRoot) { using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { this.CreateFolderForFile(storage, file); using (IsolatedStorageFileStream fileStream = storage.CreateFile(file)) { Json <T> .Instance.SerializeToStream(data, fileStream); } } } } catch (IsolatedStorageException inner) { throw new IsolatedStorageException("Could not SaveJsonAsync to file '" + file + "'", inner); } }, Scheduler.ThreadPool).Retry(2)); }
public IObservable <T> LoadJsonAsync <T>(string filePath) where T : class { return(ObservableEx.DeferredStart(() => { try { lock (this.syncRoot) { using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { if (!storage.FileExists(filePath)) { return default(T); } using ( var input = new IsolatedStorageFileStream( filePath, FileMode.Open, FileAccess.Read, FileShare.Read, storage)) { return Json <T> .Instance.DeserializeFromStream(input); } } } } catch (IsolatedStorageException inner) { throw new IsolatedStorageException("Could not LoadJsonAsync for file '" + filePath + "'", inner); } }, Scheduler.ThreadPool).Retry(2)); }
/// <summary> /// </summary> /// <param name = "url"> /// </param> /// <param name = "postData"> /// </param> /// <typeparam name = "TRequest"> /// </typeparam> /// <typeparam name = "TResponse"> /// </typeparam> /// <returns> /// </returns> public IObservable <TResponse> PostAndGetDeserializedAsync <TRequest, TResponse>(Uri url, TRequest postData) where TRequest : class where TResponse : class { var sequence = from postString in ObservableEx.DeferredStart(() => Json <TRequest> .Instance.SerializeToString(postData)) from completed in this.PostAndGetStringAsync(url, postString) select Json <TResponse> .Instance.DeserializeFromString(completed); return(sequence); }
////public IObservable<T> LoadProtoBufAsync<T>(string filePath) where T : class ////{ //// return ObservableEx.DeferredStart(() => //// { //// lock (this.syncRoot) //// { //// using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) //// { //// if (!storage.FileExists(filePath)) //// { //// return default(T); //// } //// using (var input = new IsolatedStorageFileStream( //// filePath, FileMode.Open, FileAccess.Read, FileShare.Read, storage)) //// { //// return ProtoBuf.Serializer.Deserialize<T>(input); //// } //// } //// } //// }, //// Scheduler.ThreadPool); ////} public IObservable <string> LoadStringAsync(string file) { return(ObservableEx.DeferredStart(() => this.Load(file), Scheduler.ThreadPool).Retry(2)); }
////public IObservable<PortableUnit> SaveProtoBufAsync<T>(string file, T data) where T : class ////{ //// return ObservableEx.DeferredStart( //// () => //// { //// lock (this.syncRoot) //// { //// using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) //// { //// this.CreateFolderForFile(storage, file); //// using (IsolatedStorageFileStream fileStream = storage.CreateFile(file)) //// { //// ProtoBuf.Serializer.Serialize(fileStream, data); //// } //// } //// } //// }, //// Scheduler.ThreadPool); ////} public IObservable <PortableUnit> SaveStringAsync(string file, string text) { return(ObservableEx.DeferredStart(() => this.Save(file, text), Scheduler.ThreadPool).Retry(2)); }