public static StorageHub <TToken, TValue> CreateXmlDatacontractIsolatedStorageHub( Func <TToken, string> fileNameFactory, IsolatedStorageFile folder = null, Func <Task <TToken[]> > storageTokensSelector = null) { var hub = new XmlDataContractStreamStorageHub <TToken, TValue>( async(tp, tk) => { await TaskEx.Yield(); folder = folder ?? IsolatedStorageFile.GetUserStoreForApplication(); var filepath = fileNameFactory(tk); switch (tp) { case StreamOpenType.Read: return(folder.OpenFile(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)); case StreamOpenType.Write: return(folder.OpenFile(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)); default: return(null); } }, storageTokensSelector ); return(hub); }
public static StorageHub <TToken, TValue> CreateXmlDatacontractFileStorageHub( Func <TToken, string> fileNameFactory, string folder = null, Func <Task <TToken[]> > storageTokensSelector = null) { var hub = new XmlDataContractStreamStorageHub <TToken, TValue>( async(tp, tk) => { folder = folder ?? Environment.CurrentDirectory; var filepath = Path.Combine(folder, fileNameFactory(tk)); switch (tp) { case StreamOpenType.Read: return(await TaskExHelper.FromResult(new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read))); case StreamOpenType.Write: return(await TaskExHelper.FromResult(new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))); default: return(null); } }, storageTokensSelector ); return(hub); }
public static StorageHub <TToken, TValue> CreateXmlDatacontractFileStorageHub( Func <TToken, string> fileNameFactory, string folder = null, Func <Task <TToken[]> > storageTokensSelector = null) { var hub = new XmlDataContractStreamStorageHub <TToken, TValue>( async(tp, tk) => { folder = folder ?? Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData); var filepath = Path.Combine(folder, fileNameFactory(tk)); switch (tp) { case StreamOpenType.Read: return(new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)); case StreamOpenType.Write: return(new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)); default: return(null); } }, storageTokensSelector ); return(hub); }
public static StorageHub <TToken, TValue> CreateXmlDatacontractFileStorageHub( Func <TToken, string> fileNameFactory, StorageFolder folder = null, Func <Task <TToken[]> > storageTokensSelector = null) { var hub = new XmlDataContractStreamStorageHub <TToken, TValue>( async(tp, tk) => { folder = folder ?? Windows.Storage.ApplicationData.Current.LocalFolder; switch (tp) { case StreamOpenType.Read: { var file = await folder.CreateFileAsync(fileNameFactory(tk), CreationCollisionOption.OpenIfExists); return(await file.OpenStreamForReadAsync()); } case StreamOpenType.Write: { var file = await folder.CreateFileAsync(fileNameFactory(tk), CreationCollisionOption.ReplaceExisting); return(await file.OpenStreamForWriteAsync()); } default: return(null); } }, storageTokensSelector ); return(hub); }