Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
    }
Esempio n. 4
0
 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()));
     }
 }
Esempio n. 5
0
        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();
            });
        }