bool ISubjectPersistance.SaveSubject(string provider, StoredSubject subject) { Guard.ArgumentNull(subject, nameof(subject)); var file = Initiaize(IsolatedStorageFile.GetStore(Scope, null)); var root = Path.Combine(ROOT_DIRECTORY, provider); var path = Path.Combine(root, subject.Name); InitializeSubDirectory(file, path); var filePath = Path.Combine(path, string.Concat(subject.Key, ".dat")); try { using var stream = new IsolatedStorageFileStream(filePath, FileMode.Create, file); var serializer = new BinaryCompressSerializer(); var bytes = serializer.Serialize(subject); stream.Write(bytes, 0, bytes.Length); return(true); } catch { return(false); } }
void ISubjectPersistance.ReadSubjects(string provider, Func <StoredSubject, bool> readAndAccept) { Guard.ArgumentNull(readAndAccept, nameof(readAndAccept)); var root = Path.Combine(ROOT_DIRECTORY, provider); var file = IsolatedStorageFile.GetStore(Scope, null); if (!file.DirectoryExists(root)) { return; } foreach (var dirName in file.GetDirectoryNames(Path.Combine(root, "*"))) { var subPath = Path.Combine(root, dirName); var deleted = new List <string>(); foreach (var fileName in file.GetFileNames(Path.Combine(subPath, "*"))) { var filePath = Path.Combine(subPath, fileName); var key = fileName.Substring(0, fileName.LastIndexOf(".")); try { using var stream = new IsolatedStorageFileStream(filePath, FileMode.Open, FileAccess.ReadWrite, file); using var memory = stream.CopyToMemory(); var serializer = new BinaryCompressSerializer(); var subject = serializer.Deserialize <StoredSubject>(memory.ToArray()); if (subject.ExpiresAt < DateTime.Now) { deleted.Add(filePath); continue; } subject.PublishRetries++; if (readAndAccept(subject)) { deleted.Add(filePath); } else { var bytes = serializer.Serialize(subject); stream.Seek(0, SeekOrigin.Begin); stream.Write(bytes, 0, bytes.Length); } } catch { } } foreach (var fileName in deleted) { file.DeleteFile(fileName); } } }
public void SerializeTest() { var serializer = new BinaryCompressSerializer(); var obj = new BinaryCryptoData { Age = 12, Name = "huangxd", Birthday = DateTime.Parse("1982-9-20") }; var bytes = serializer.Serialize(obj); Assert.IsNotNull(bytes); }
private IConfigurationSettingItem Parse(string fileName) { var setting = new BinaryInstanceSetting(); fileName = DbUtility.ResolveFullPath(fileName); if (!File.Exists(fileName)) { throw new FileNotFoundException(SR.GetString(SRKind.FileNotFound, setting.FileName), setting.FileName); } setting.FileName = fileName; FileStream stream = null; try { //读取文件 stream = new FileStream(setting.FileName, FileMode.Open, FileAccess.Read); var bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Close(); stream = null; //反序列化 var store = new BinaryCompressSerializer().Deserialize <BinaryConnectionStore>(bytes); if (store != null) { setting.ProviderType = store.ProviderType; setting.DatabaseType = Type.GetType(store.DatabaseType, false, true); setting.ConnectionString = ConnectionStringHelper.GetConnectionString(store.ConnectionString); } } catch { throw new InvalidOperationException(SR.GetString(SRKind.FailInDataParse)); } finally { if (stream != null) { stream.Dispose(); } } return(setting); }
public void ReadTest() { var regKey = Registry.CurrentUser.OpenSubKey("software\\fireasy", true); if (regKey == null) { regKey = Registry.CurrentUser.CreateSubKey("software\\fireasy"); } var stream = new BinaryCompressSerializer(); var data = new BinaryConnectionStore { ConnectionString = "test", ProviderType = "mysql" }; regKey.SetValue("test1", stream.Serialize(data)); regKey.Close(); var section = ConfigurationUnity.GetSection <InstanceConfigurationSection>(); Assert.AreEqual("test", section.Settings["reg1"].ConnectionString); }
private bool ParseRegistryData(RegistryInstanceSetting setting, object data) { if (data is byte[] bytes) { try { //反序列化 //var header = new SerializeHeader { HeaderBytes = Encoding.ASCII.GetBytes(Name) }; var store = new BinaryCompressSerializer().Deserialize <BinaryConnectionStore>(bytes); if (store != null) { if (!string.IsNullOrEmpty(store.DatabaseType)) { setting.DatabaseType = Type.GetType(store.DatabaseType, false, true); } setting.ProviderType = store.ProviderType; setting.ConnectionString = ConnectionStringHelper.GetConnectionString(store.ConnectionString); return(true); } } catch { throw new InvalidOperationException(SR.GetString(SRKind.FailInDataParse)); } } else if (data is string) { var con = new ConnectionString(data.ToString()); setting.ProviderType = con.ProviderType; setting.DatabaseType = Type.GetType(con.DatabaseType, false, true); setting.ConnectionString = con.ToString(); return(true); } return(false); }
/// <summary> /// 解压缩后json反序列化。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="bytes"></param> /// <returns></returns> public virtual T Deserialize <T>(byte[] bytes) { var compress = new BinaryCompressSerializer(); return(serializer.Deserialize <T>(compress.Deserialize <string>(bytes))); }
/// <summary> /// json序列化后进行压缩。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value"></param> /// <returns></returns> public virtual byte[] Serialize <T>(T value) { var compress = new BinaryCompressSerializer(); return(compress.Serialize(serializer.Serialize(value))); }
public void DeserializeTest() { var serializer = new BinaryCompressSerializer(); #region var bytes = new byte[] { 101, 144, 203, 74, 3, 65, 16, 69, 59, 137, 49, 1, 31, 43, 93, 184, 155, 189, 67, 99, 92, 207, 136, 78, 66, 22, 10, 33, 144, 224, 54, 148, 51, 197, 164, 152, 126, 132, 126, 128, 237, 194, 181, 63, 227, 79, 228, 199, 180, 91, 116, 161, 222, 130, 170, 197, 189, 156, 11, 197, 122, 140, 177, 143, 168, 116, 147, 142, 251, 113, 221, 207, 201, 32, 216, 192, 167, 90, 74, 173, 214, 104, 157, 205, 179, 71, 52, 150, 180, 42, 39, 252, 42, 77, 158, 77, 189, 112, 222, 96, 169, 208, 59, 3, 34, 207, 150, 254, 73, 80, 253, 128, 97, 173, 59, 84, 165, 242, 66, 12, 19, 120, 249, 155, 199, 87, 104, 8, 4, 189, 128, 139, 60, 158, 240, 188, 34, 5, 38, 68, 127, 103, 208, 218, 159, 0, 154, 175, 238, 203, 111, 215, 132, 157, 211, 51, 112, 48, 136, 208, 243, 98, 1, 18, 111, 186, 205, 166, 130, 186, 35, 213, 206, 9, 69, 115, 81, 84, 100, 220, 182, 129, 240, 215, 57, 43, 238, 218, 127, 241, 30, 27, 156, 156, 174, 130, 117, 40, 249, 12, 107, 146, 32, 210, 3, 14, 83, 193, 104, 235, 65, 181, 207, 13, 187, 125, 125, 59, 216, 191, 143, 199, 195, 254, 228, 250, 232, 19 }; #endregion var obj = serializer.Deserialize <BinaryCryptoData>(bytes); Assert.IsNotNull(obj); }