private void WriteObject(DataContractSerializer serializer, object instance) { this.serializerStream.SetLength(0); serializer.Serialize(this.serializerStream, instance); this.stream.Write(BitConverter.GetBytes(this.serializerStream.Length), 0, sizeof(long)); this.stream.Write(this.serializerBuffer, 0, (int)this.serializerStream.Length); }
public static TransferCheckpoint SaveAndReloadCheckpoint(TransferCheckpoint checkpoint) { //return checkpoint; Test.Info("Save and reload checkpoint"); #if BINARY_SERIALIZATION IFormatter formatter = new BinaryFormatter(); #else var formatter = new DataContractSerializer(typeof(TransferCheckpoint)); #endif TransferCheckpoint reloadedCheckpoint; string tempFileName = Guid.NewGuid().ToString(); using (var stream = new FileStream(tempFileName, FileMode.Create, FileAccess.Write, FileShare.None)) { formatter.Serialize(stream, checkpoint); } using (var stream = new FileStream(tempFileName, FileMode.Open, FileAccess.Read, FileShare.None)) { reloadedCheckpoint = formatter.Deserialize(stream) as TransferCheckpoint; } File.Delete(tempFileName); return(reloadedCheckpoint); }
private SMSSeriesId EnqueueSMS(Guid userId, Guid senderNameId, Guid providerId, MessageLcd2 req, string clientId = null, string distributionId = null, string smsId = null, Dictionary <string, string> customParameters = null) { SMSSeriesId result = SMSSeriesId.Empty; DestinationAddress[] dadress; if (req is SmppSubmitMulti) { dadress = (req as SmppSubmitMulti).DestinationAddresses; } else { SmppSubmitSm simple = req as SmppSubmitSm; dadress = new[] { new DestinationAddress(simple.DestinationAddressTon, simple.DestinationAddressNpi, simple.DestinationAddress) }; } var enqueueResult = Context.EnqueueSMS(userId, senderNameId, providerId, clientId, distributionId, smsId, (short?)req.SequenceNumber, req.ServiceType, (short?)req.SourceAddressTon, (short?)req.SourceAddressNpi, req.SourceAddress, req is SmppSubmitMulti ? (short?)(req as SmppSubmitMulti).NumberOfDestinations : 1, req.EsmClass, (short?)req.ProtocolId, (short?)req.PriorityFlag, req.ScheduleDeliveryTime, req.ValidityPeriod, (short?)req.RegisteredDelivery, req.ReplaceIfPresentFlag?(short?)1:(short?)0, (short?)req.DataCoding, req.SmDefaultMessageId, req.SmLength, (req.ShortMessage as byte[]).GetHexString(), _tlvSerializer.Serialize(new Hashtable(req.TlvTable.tlvTable)), _addressSerializer.Serialize(dadress), customParameters == null? null : Tools.Merge(customParameters) ); Guid?baseSmsId = enqueueResult.FirstOrDefault(); byte position = 0; try { position = req.SarSegmentSeqnum; } catch { /*Не выставлена */ } if (baseSmsId != null) { result = new SMSSeriesId() { Id = baseSmsId.Value, ExternalId = smsId, SeriesPosition = position } } ; return(result); } }
public static void TestDataContractSerializing() { var dcs = new DataContractSerializer<Test<string>>(); using (var fileStream = File.Create(Path.Combine("save", "test.dc"))) { dcs.Serialize(fileStream, Program.GetTest()); } using (var fileStream = File.OpenRead(Path.Combine("save", "test.dc"))) { var test = dcs.Deserialize(fileStream); Debug.Assert(test.SequenceEqual(Program.GetTest())); } }
private void CompareSerializers <T>(T obj, int runs) { //warm-up #if NETFULL || NETCOREAPP3_1 jilserializer.SerializeToString(obj); using (MemoryStream mem = new MemoryStream()) { binaryserializer.Serialize(obj, mem); } using (MemoryStream mem = new MemoryStream()) { datacontractserializer.Serialize(obj, mem); } #endif #if NETFULL using (MemoryStream mem = new MemoryStream()) { soapserializer.Serialize(obj, mem); } #endif var netserializer = SerializerFactory.Get("NET"); using (MemoryStream mem = new MemoryStream()) { netserializer.Serialize(obj, mem); } jsonnetserializer.SerializeToString(obj); textjsonserializer.SerializeToString(obj); using (MemoryStream mem = new MemoryStream()) { protobufserializer.Serialize(obj, mem); } xmlserializer.SerializeToString(obj); var keys = serializer.Keys.ToList(); #if NETFULL || NETCOREAPP3_1 serializer["Jil"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Jil"].Score = Helper.AverageRuntime(() => { jilserializer.SerializeToString(obj); }, runs); }; serializer["Binary"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Binary"].Score = Helper.AverageRuntime(() => { using (MemoryStream mem = new MemoryStream()) { binaryserializer.Serialize(obj, mem); } }, runs); }; serializer["DataContract"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["DataContract"].Score = Helper.AverageRuntime(() => { using (MemoryStream mem = new MemoryStream()) { datacontractserializer.Serialize(obj, mem); } }, runs); }; #endif #if NETFULL serializer["Soap"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Soap"].Score = Helper.AverageRuntime(() => { using (MemoryStream mem = new MemoryStream()) { soapserializer.Serialize(obj, mem); } }, runs); }; #endif serializer["NET"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["NET"].Score = Helper.AverageRuntime(() => { using (MemoryStream mem = new MemoryStream()) { netserializer.Serialize(obj, mem); } }, runs); }; serializer["Json"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Json"].Score = Helper.AverageRuntime(() => { jsonnetserializer.SerializeToString(obj); }, runs); }; serializer["TextJson"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["TextJson"].Score = Helper.AverageRuntime(() => { textjsonserializer.SerializeToString(obj); }, runs); }; serializer["Xml"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Xml"].Score = Helper.AverageRuntime(() => { xmlserializer.SerializeToString(obj); }, runs); }; serializer["Protobuf"].Act = () => { GC.Collect(2, GCCollectionMode.Forced, blocking: true); serializer["Protobuf"].Score = Helper.AverageRuntime(() => { using (MemoryStream mem = new MemoryStream()) { protobufserializer.Serialize(obj, mem); } }, runs); }; keys.ForEach(k => { serializer[k].Act(); }); }