示例#1
0
 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));
 }
示例#2
0
        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));
        }
示例#3
0
        /// <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);
        }
示例#4
0
        ////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));
        }
示例#5
0
        ////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));
        }