/// <summary> /// Creates DictionaryData filled by entries in the IDictionary. /// </summary> /// <remarks> /// Its behavior is decided by FromDictionary method, depending on how it's /// implemented by inheritors. /// </remarks> public static DictionaryData CreateDictionaryData(IDictionary dict) { //every dictionary must have type information //if not, exception should be thrown DictionaryDataType t = (DictionaryDataType)dict[DictionaryData.DataTypeKey]; //This is supposed to be a derived class DictionaryData d = PrepareDictionaryData(t); d.FromDictionary(dict); return(d); }
public void TestSerializeAndDeserialize() { string str_to_check = "Test String 1"; RegularData d = new RegularData(Encoding.UTF8.GetBytes(str_to_check)); FingerprintedData p = new FingerprintedData(d); byte[] serializedObj = p.SerializeTo(); Logger.WriteLineIf(LogLevel.Verbose, _log_props, Encoding.UTF8.GetString(serializedObj)); FingerprintedData actual_p = (FingerprintedData)DictionaryData.CreateDictionaryData(serializedObj, new AdrSerializer()); RegularData actual_d = (RegularData)actual_p.InnerData; Assert.AreEqual(str_to_check, Encoding.UTF8.GetString(actual_d.PayLoad)); }
public void TestSerializeAndDeserialize() { string str_to_compare = "Test String 1"; byte[] b = Encoding.UTF8.GetBytes(str_to_compare); RegularData d = new RegularData(b); Brunet.MemBlock mb = Brunet.MemBlock.Reference(d.SerializeTo()); Logger.WriteLineIf(LogLevel.Verbose, _log_props, mb.GetString(Encoding.UTF8)); RegularData d_actual = (RegularData)DictionaryData.CreateDictionaryData(mb, new AdrSerializer()); Assert.AreEqual(str_to_compare, Encoding.UTF8.GetString(d_actual.PayLoad)); }
/** * Fills inner_data with the IDictionary. * For derived classes, fields of the class itself should be added by its overrided * FromDictionary() */ protected void FillInnerData(IDictionary dict) { IDictionary inner_dict = (IDictionary)dict[InnerDataKey]; _inner_data = (DictionaryData)DictionaryData.CreateDictionaryData(inner_dict); }
public DictionaryDataDecorator(DictionaryData inner_data) { _inner_data = inner_data; }
/** * Data that could be fragmented */ public FragmentableData(DictionaryData data) : base(data) { }
public FingerprintedData(DictionaryData inner) : base(inner) { }