Exemplo n.º 1
0
        private void SerializeCustom()
        {
            var s       = new CustomBinaryFormatter();
            var message = new CustomTypicalMessage()
            {
                StringProp = "hello",
                GuidProp   = Guid.NewGuid(),
                IntProp    = 123,
                DateProp   = DateTime.UtcNow,
            };

            s.Register <CustomTypicalMessage>(0);

            var stream = new MemoryStream();

            s.Serialize(stream, message);
            var bytes = stream.ToArray();

            RunTest("Greg Young Custom Serializer", () =>
            {
                var stream2 = new MemoryStream();
                s.Serialize(stream2, message);
            },
                    () =>
            {
                stream.Position = 0;
                s.Deserialize(stream);
            }, bytes.Length);
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public byte[] Serialize()
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();

            bf.Serialize(ms, this);
            return(ms.ToArray());
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "sms", type: "direct");
                    var queueName = channel.QueueDeclare().QueueName;

                    channel.QueueBind(queue: queueName, exchange: "sms", routingKey: "send");

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;

                        var binaryFormatter = new CustomBinaryFormatter();
                        var sms             = binaryFormatter.FromByteArray <SendSmsEvent>(body);

                        // emulate some work - using Twillio to send message, for example
                        Thread.Sleep(1000);

                        Console.WriteLine($"Received message (version - {sms.Version}) from '{sms.From}' to '{sms.To}' with next text: {sms.Body}");

                        // send message, that sms was send
                        var replyProps = channel.CreateBasicProperties();
                        replyProps.CorrelationId = ea.BasicProperties.CorrelationId;

                        var smsSend = new SmsIsSendEvent {
                            Id = sms.Id
                        };
                        byte[] smsSendBody = binaryFormatter.ToByteArray(smsSend);

                        channel.BasicPublish(exchange: "sms", routingKey: ea.BasicProperties.ReplyTo, basicProperties: replyProps, body: smsSendBody);

                        // processed successfully
                        channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                    };

                    channel.BasicConsume(queue: queueName,
                                         autoAck: false,
                                         consumer: consumer);

                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
        }
Exemplo n.º 4
0
 public static void Deserialize(byte[] data, Action <SactaMsg> deliver, Action <string> deliverError)
 {
     try
     {
         MemoryStream          ms = new MemoryStream(data);
         CustomBinaryFormatter bf = new CustomBinaryFormatter();
         SactaMsg msg             = bf.Deserialize <SactaMsg>(ms);
         deliver(msg);
     }
     catch (Exception x)
     {
         Logger.Exception <SactaMsg>(x);
         deliverError(x.Message);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="dg"></param>
        void OnNewData(object sender, DataGram dg)
        {
            try
            {
                MemoryStream          ms = new MemoryStream(dg.Data);
                CustomBinaryFormatter bf = new CustomBinaryFormatter();
                SactaMsg msg             = bf.Deserialize <SactaMsg>(ms);

                if (IsValid(msg))
                {
                    int net = (sender == _Comm[0] ? 0 : 1);
                    _LastScvReceived[net] = DateTime.Now;

                    switch (msg.Type)
                    {
                    case SactaMsg.MsgType.Presence:
                        _ActivityTimeOut = (uint)(((SactaMsg.PresenceInfo)(msg.Info)).ActivityTimeOutSg * 1000);
                        if (_ActivityTimeOut < 5)
                        {
                            _ActivityTimeOut = Settings.Default.ActivityTimeOut;
                        }
                        break;

                    case SactaMsg.MsgType.SectAsk:
                        SendSectorization(net, _SectorUcs, msg.UserOrg);
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", "Recibida Peticion de Sectorizacion");
                        break;

                    case SactaMsg.MsgType.SectAnwer:
                        SactaMsg.SectAnswerInfo info = (SactaMsg.SectAnswerInfo)(msg.Info);
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", String.Format("Sectorizacion V-{0}: {1}", info.Version, (info.Result == 1 ? "Implantada" : "Rechazada")));
                        break;

                    case SactaMsg.MsgType.Init:
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", "Recibido MSG INIT");
                        _SeqNum = 0;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                if (!_Disposed)
                {
                    MainForm.LogMethod("ERROR", "OnNewData", String.Format("Excepción al Procesar Datos Recibidos: {0}", ex.Message));
                }
            }
        }
 public static void RegisterMessagesWithSerializer(CustomBinaryFormatter formatter)
 {
     formatter.Register <VMSpawnMeessage>(1000);
     formatter.Register <TerminateMessage>(1001);
     formatter.Register <VMTerminating>(1002);
     formatter.Register <VMInitializedMessage>(1003);
     formatter.Register <VMSpawnedMessage>(1004);
     formatter.Register <DiagnosticInstanceMessage>(1008);
     formatter.Register <PauseVMMessage>(1009);
     formatter.Register <ResumeVMMessage>(1010);
     formatter.Register <ForceFullRunMessage>(1011);
     formatter.Register <RunRecursiveRunDetectorMessage>(1012);
     formatter.Register <RecursiveRunResultMessage>(1013);
     formatter.Register <InvalidLicenseMessage>(1014);
     formatter.Register <RegisterLicenseMessage>(1015);
     formatter.Register <ValidLicenseMessage>(1016);
     formatter.Register <ConfigurationUpdateMessage>(1017);
     formatter.Register <RunRelatedTestsMessage>(1019);
     formatter.Register <ManualMinimizationRequestMessage>(1020);
     formatter.Register <AssembliesMinimizedMessage>(1021);
     formatter.Register <UpdateCustomOutputpathMessage>(1022);
     formatter.Register <GoToFileAndLineMessage>(1023);
     formatter.Register <RequestVisualGraphMessage>(1024);
     formatter.Register <VisualGraphGeneratedMessage>(1025);
     formatter.Register <RequestRiskMetricsMessage>(1026);
     formatter.Register <RiskMetricGeneratedMessage>(1027);
     formatter.Register <RequestMessage <AssemblyPathRequest, AssemblyPathResponse> >(1028);
     formatter.Register <AssemblyPathResponse>(1029);
     formatter.Register <RequestMessage <IsSolutionInitializedRequest, IsSolutionInitializedResponse> >(1030);
     formatter.Register <IsSolutionInitializedResponse>(1031);
     formatter.Register <PartialRunMessage>(1032);
     formatter.Register <RealtimeChangeMessage>(1033);
     formatter.Register <ProfilerCompletedMessage>(1034);
     formatter.Register <ProfilerInitializedMessage>(1035);
     formatter.Register <RequestRuntimeTestInformationMessage>(1036);
     formatter.Register <TestInformationGeneratedMessage>(1037);
     formatter.Register <RealtimeChangeList>(1038);
     formatter.Register <OrderedBuildList>(1039);
     formatter.Register <RequestMessage <OrderedBuildList, OrderedBuildList> >(1040);
     formatter.Register <MinimizerInitializedMessage>(1041);
     formatter.Register <ProfiledTestRunStarted>(1042);
     formatter.Register <ProfilerLoadErrorOccurredMessage>(1043);
     formatter.Register <GetLastAffectedGraphMessage>(1044);
     formatter.Register <TestProfilerCorruptedMessage>(1045);
     formatter.Register <RequestProfiledGraphMessage>(1046);
 }
 public static void RegisterMessagesWithSerializer(CustomBinaryFormatter formatter)
 {
     formatter.Register<VMSpawnMeessage>(1000);
     formatter.Register<TerminateMessage>(1001);
     formatter.Register<VMTerminating>(1002);
     formatter.Register<VMInitializedMessage>(1003);
     formatter.Register<VMSpawnedMessage>(1004);
     formatter.Register<DiagnosticInstanceMessage>(1008);
     formatter.Register<PauseVMMessage>(1009);
     formatter.Register<ResumeVMMessage>(1010);
     formatter.Register<ForceFullRunMessage>(1011);
     formatter.Register<RunRecursiveRunDetectorMessage>(1012);
     formatter.Register<RecursiveRunResultMessage>(1013);
     formatter.Register<InvalidLicenseMessage>(1014);
     formatter.Register<RegisterLicenseMessage>(1015);
     formatter.Register<ValidLicenseMessage>(1016);
     formatter.Register<ConfigurationUpdateMessage>(1017);
     formatter.Register<RunRelatedTestsMessage>(1019);
     formatter.Register<ManualMinimizationRequestMessage>(1020);
     formatter.Register<AssembliesMinimizedMessage>(1021);
     formatter.Register<UpdateCustomOutputpathMessage>(1022);
     formatter.Register<GoToFileAndLineMessage>(1023);
     formatter.Register<RequestVisualGraphMessage>(1024);
     formatter.Register<VisualGraphGeneratedMessage>(1025);
     formatter.Register<RequestRiskMetricsMessage>(1026);
     formatter.Register<RiskMetricGeneratedMessage>(1027);
     formatter.Register<RequestMessage<AssemblyPathRequest, AssemblyPathResponse>>(1028);
     formatter.Register<AssemblyPathResponse>(1029);
     formatter.Register<RequestMessage<IsSolutionInitializedRequest, IsSolutionInitializedResponse>>(1030);
     formatter.Register<IsSolutionInitializedResponse>(1031);
     formatter.Register<PartialRunMessage>(1032);
     formatter.Register<RealtimeChangeMessage>(1033);
     formatter.Register<ProfilerCompletedMessage>(1034);
     formatter.Register<ProfilerInitializedMessage>(1035);
     formatter.Register<RequestRuntimeTestInformationMessage>(1036);
     formatter.Register<TestInformationGeneratedMessage>(1037);
     formatter.Register<RealtimeChangeList>(1038);
     formatter.Register<OrderedBuildList>(1039);
     formatter.Register<RequestMessage<OrderedBuildList, OrderedBuildList>>(1040);
     formatter.Register<MinimizerInitializedMessage>(1041);
     formatter.Register<ProfiledTestRunStarted>(1042);
     formatter.Register<ProfilerLoadErrorOccurredMessage>(1043);
     formatter.Register<GetLastAffectedGraphMessage>(1044);
     formatter.Register<TestProfilerCorruptedMessage>(1045);
     formatter.Register<RequestProfiledGraphMessage>(1046);
 }
Exemplo n.º 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sactanet"></param>
        /// <param name="sectorUcs"></param>
        /// <param name="ask"></param>
        void SendSectorization(int sactanet, string[] sectorUcs, ushort UserOrg)
        {
            Debug.Assert(sactanet == 0 || sactanet == 1);

            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Sectorization, _SeqNum, _SectVersion, sectorUcs);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            byte[] user = BitConverter.GetBytes(UserOrg);
            Array.Reverse(user);
            Array.Copy(user, 0, data, 6, 2);

            _Comm[sactanet].Send(_EndPoint[sactanet], data);
            MainForm.LogMethod("INFO", sactanet == 0 ? "SACTA1" : "SACTA2", String.Format("Enviando Sectorizacion V-{2} a SCV {0} ({1})", UserOrg, strSect(sectorUcs), _SectVersion));
        }
Exemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        void SendPresence()
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();

            MemoryStream ms  = new MemoryStream();
            SactaMsg     msg = new SactaMsg(SactaMsg.MsgType.Presence, _SeqNum++);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }

            _LastPresenceSended = DateTime.Now;
        }
Exemplo n.º 10
0
        public void ChatRoomInfosSerializationTest()
        {
            var original = new[]
            {
                new ChatRoomInfo {
                    IsPasswordProtected = true, Name = "r1"
                },
                new ChatRoomInfo {
                    IsPasswordProtected = false, Name = "r2"
                }
            };

            // Serializing
            var serializedData = CustomBinaryFormatter.Serialize(original);

            Assert.NotNull(serializedData);
            Assert.True(serializedData.Length > 0);

            // Deserializing
            var reconstructed = CustomBinaryFormatter.Deserialize(serializedData, 0, serializedData.Length);

            CollectionAssert.AreEqual(original, reconstructed, new ChatRoomInfoComparer());
        }
Exemplo n.º 11
0
        /// <summary>
        ///
        /// </summary>
        void SendInit()
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Init, SactaMsg.InitId);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                MainForm.LogMethod("INFO", String.Format("Enviado MSG Init a SCV {0}", sUser));

                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }

            _SeqNum = 0;
        }
Exemplo n.º 12
0
        private static void Received(object model, BasicDeliverEventArgs ea)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    var body = ea.Body;

                    var binaryFormatter = new CustomBinaryFormatter();
                    var sms             = binaryFormatter.FromByteArray <SmsIsSendEvent>(body);


                    var controller = new MessagesController(null);
                    controller.SmsSend(sms);

                    // processed successfully
                    channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                }
        }
Exemplo n.º 13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sectorUcs"></param>
        /// <param name="ask"></param>
        void SendSectorization(string[] sectorUcs, SactaMsg ask)
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();

            MemoryStream ms  = new MemoryStream();
            SactaMsg     msg = new SactaMsg(SactaMsg.MsgType.Sectorization, _SeqNum++, _SectVersion++, sectorUcs);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            if (ask != null)
            {
                MainForm.LogMethod("INFO", String.Format("Enviando Sectorizacion a SCV {0} ({1})", ask.UserOrg, strSect(sectorUcs)));

                byte[] user = BitConverter.GetBytes(ask.UserOrg);
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }
            else
            {
                foreach (string sUser in Settings.Default.ScvUsers)
                {
                    MainForm.LogMethod("INFO", String.Format("Enviando Sectorizacion V-{0} a SCV {1} ({2})", ((SactaMsg.SectInfo)(msg.Info)).Version, sUser, strSect(sectorUcs)));

                    byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                    Array.Reverse(user);
                    Array.Copy(user, 0, data, 6, 2);

                    _Comm[0].Send(_EndPoint[0], data);
                    _Comm[1].Send(_EndPoint[1], data);
                }
            }
        }
Exemplo n.º 14
0
        /// <summary>
        ///
        /// </summary>
        void SendInit(int sactanet)
        {
            Debug.Assert(sactanet == 0 || sactanet == 1);

            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Init, SactaMsg.InitId);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[sactanet].Send(_EndPoint[sactanet], data);
                MainForm.LogMethod("INFO", sactanet == 0 ? "SACTA1" : "SACTA2", String.Format("Enviado MSG Init a SCV {0}", sUser));

                //_Comm[1].Send(_EndPoint[1], data);
                //MainForm.LogMethod("INFO", "SACTA2", String.Format("Enviado MSG Init a SCV {0}", sUser));
            }
        }
        public async Task <string> SendMessage(MessageViewModel message)
        {
            var sendSmsEvent = new SendSmsEvent
            {
                Id      = message.Id,
                Body    = message.Body,
                From    = message.From,
                To      = message.To,
                Version = "v1.0"
            };

            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "sms", type: ExchangeType.Direct);

                    IBasicProperties props = channel.CreateBasicProperties();
                    props.CorrelationId = Guid.NewGuid().ToString();
                    props.ReplyTo       = "receive";

                    var    binaryFormatter = new CustomBinaryFormatter();
                    byte[] body            = binaryFormatter.ToByteArray(sendSmsEvent);

                    channel.BasicPublish(exchange: "sms",
                                         routingKey: "send",
                                         basicProperties: props,
                                         body: body);
                }

            return("Your message will be send soon");
        }
Exemplo n.º 16
0
 public void SetUp()
 {
     _formatter = new CustomBinaryFormatter();
 }
Exemplo n.º 17
0
        internal static void AddRecords(List <HistoryRecord> Records)
        {
            lock (_syncRoot)
            {
                using (FileStream dataIndexStream = new FileStream(GetFile(true, true), FileMode.OpenOrCreate))
                {
                    using (FileStream dataContentStream = new FileStream(GetFile(true, false), FileMode.OpenOrCreate))
                    {
                        var historyFormatter = new CustomBinaryFormatter(dataIndexStream, dataContentStream);
                        historyFormatter.Register <HistoryRecord>(1);

                        historyFormatter.MoveToEnd();
                        var historyCount = historyFormatter.Count;
                        Records.ForEach(r =>
                        {
                            historyFormatter.Serialize <HistoryRecord>(r);
                        });

                        historyFormatter.Flush();

                        using (FileStream dateIndexStream = new FileStream(GetFile(false, true), FileMode.OpenOrCreate))
                        {
                            using (FileStream dateContentStream = new FileStream(GetFile(false, false), FileMode.OpenOrCreate))
                            {
                                var dateFormatter = new CustomBinaryFormatter(dateIndexStream, dateContentStream);
                                dateFormatter.Register <HistoryDate>(1);

                                var  dateCount      = dateFormatter.Count;
                                var  today          = DateTime.Now.Date.AddDays(1);
                                var  yesterday      = DateTime.Now.Date;
                                long todayIndex     = -1;
                                var  foundYesterday = false;
                                for (long i = 0; i < dateCount; i++)
                                {
                                    var date = dateFormatter.Deserialize <HistoryDate>(false);
                                    if (DateTime.Parse(date.Date) == today)
                                    {
                                        todayIndex = i;
                                    }
                                    if (DateTime.Parse(date.Date) == yesterday)
                                    {
                                        foundYesterday = true;
                                    }
                                }
                                if (!foundYesterday)
                                {
                                    dateFormatter.MoveToEnd();
                                    dateFormatter.Serialize <HistoryDate>(new HistoryDate {
                                        Date = yesterday.ToString(), Index = historyCount
                                    });
                                }

                                if (todayIndex != -1)
                                {
                                    dateFormatter.MoveTo(todayIndex);
                                    dateFormatter.Serialize <HistoryDate>(new HistoryDate {
                                        Date = today.ToString(), Index = historyFormatter.Count
                                    }, true);
                                }
                                else
                                {
                                    dateFormatter.MoveToEnd();
                                    dateFormatter.Serialize <HistoryDate>(new HistoryDate {
                                        Date = today.ToString(), Index = historyFormatter.Count
                                    });
                                }

                                dateFormatter.Flush();
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 18
0
        internal static List<HistoryRecord> GetRecords(ServerInfo server, bool isServer, DateTypes dateType, DateTime startDate)
        {
            var records = new List<HistoryRecord>();
            var key = GetKey(server, isServer);
            using (var dateIndexStream = new FileStream(GetFile(false, true), FileMode.OpenOrCreate))
            {
                using (var dateContentStream = new FileStream(GetFile(false, false), FileMode.OpenOrCreate))
                {
                    var dateFormatter = new CustomBinaryFormatter(dateIndexStream, dateContentStream);
                    dateFormatter.Register<HistoryDate>(1);

                    var endDate = DateTime.Now.Date;
                    var samplingSpan = 1;
                    switch (dateType)
                    {
                        case DateTypes.Hour:
                            endDate = startDate.AddDays(1);
                            samplingSpan = 1;
                            break;
                        case DateTypes.Day:
                            endDate = startDate.AddDays(1);
                            samplingSpan = 24;
                            break;
                        case DateTypes.Week:
                            endDate = startDate.AddDays(7);
                            samplingSpan = 7 * 24;
                            break;
                        case DateTypes.Month:
                            endDate = startDate.AddMonths(1);
                            samplingSpan = 31 * 24;
                            break;
                        case DateTypes.Year:
                            endDate = startDate.AddYears(1);
                            samplingSpan = 365 * 24;
                            break;
                        default:
                            break;
                    }
                    var count = dateFormatter.Count;
                    Debug.WriteLine("all date count:" + count);
                    Debug.WriteLine("start date:" + startDate);
                    var dates = new List<HistoryDate>();
                    for (long i = 0; i < count; i++)
                    {
                        var date = dateFormatter.Deserialize<HistoryDate>(false);
                        var dateTime = DateTime.Parse(date.Date);
                        Debug.WriteLine("current date:" + dateTime);
                        if (startDate.Date <= dateTime && dateTime <= endDate)
                            dates.Add(date);
                    }
                    Debug.WriteLine("valid date count:" + dates.Count);
                    if (dates.Count > 0)
                    {
                        var start = dates.Aggregate((d1, d2) => DateTime.Parse(d1.Date) < DateTime.Parse(d2.Date) ? d1 : d2);
                        var end = dates.Aggregate((d1, d2) => DateTime.Parse(d1.Date) > DateTime.Parse(d2.Date) ? d1 : d2);

                        using (var dataIndexStream = new FileStream(GetFile(true, true), FileMode.OpenOrCreate))
                        {
                            using (var dataContentStream = new FileStream(GetFile(true, false), FileMode.OpenOrCreate))
                            {
                                var historyFormatter = new CustomBinaryFormatter(dataIndexStream, dataContentStream);
                                historyFormatter.Register<HistoryRecord>(1);

                                for (var i = start.Index; i < end.Index; i += samplingSpan)
                                {
                                    historyFormatter.MoveTo(i);
                                    var record = historyFormatter.Deserialize<HistoryRecord>(false);
                                    if (record.Key == key)
                                        records.Add(record);
                                }
                                historyFormatter.Close();
                                dataContentStream.Close();
                            }
                            dataIndexStream.Close();
                        }
                    }
                    dateFormatter.Close();
                    dateContentStream.Close();
                }
                dateIndexStream.Close();
            }
            return records;
        }
Exemplo n.º 19
0
        internal static void AddRecords(List<HistoryRecord> records)
        {
            lock (SyncRoot)
            {
                using (var dataIndexStream = new FileStream(GetFile(true, true), FileMode.OpenOrCreate))
                {
                    using (var dataContentStream = new FileStream(GetFile(true, false), FileMode.OpenOrCreate))
                    {
                        var historyFormatter = new CustomBinaryFormatter(dataIndexStream, dataContentStream);
                        historyFormatter.Register<HistoryRecord>(1);

                        historyFormatter.MoveToEnd();
                        var historyCount = historyFormatter.Count;
                        records.ForEach(r =>
                        {
                            historyFormatter.Serialize<HistoryRecord>(r);
                        });

                        historyFormatter.Flush();

                        using (var dateIndexStream = new FileStream(GetFile(false, true), FileMode.OpenOrCreate))
                        {
                            using (var dateContentStream = new FileStream(GetFile(false, false), FileMode.OpenOrCreate))
                            {
                                var dateFormatter = new CustomBinaryFormatter(dateIndexStream, dateContentStream);
                                dateFormatter.Register<HistoryDate>(1);

                                var dateCount = dateFormatter.Count;
                                var today = DateTime.Now.Date.AddDays(1);
                                var yesterday = DateTime.Now.Date;
                                long todayIndex = -1;
                                var foundYesterday = false;
                                for (long i = 0; i < dateCount; i++)
                                {
                                    var date = dateFormatter.Deserialize<HistoryDate>(false);
                                    if (DateTime.Parse(date.Date) == today)
                                        todayIndex = i;
                                    if (DateTime.Parse(date.Date) == yesterday)
                                        foundYesterday = true;
                                }
                                if (!foundYesterday)
                                {
                                    dateFormatter.MoveToEnd();
                                    dateFormatter.Serialize<HistoryDate>(new HistoryDate { Date = yesterday.ToString(), Index = historyCount });
                                }

                                if (todayIndex != -1)
                                {
                                    dateFormatter.MoveTo(todayIndex);
                                    dateFormatter.Serialize<HistoryDate>(new HistoryDate { Date = today.ToString(), Index = historyFormatter.Count }, true);
                                }
                                else
                                {
                                    dateFormatter.MoveToEnd();
                                    dateFormatter.Serialize<HistoryDate>(new HistoryDate { Date = today.ToString(), Index = historyFormatter.Count });
                                }

                                dateFormatter.Flush();
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 20
0
 public TcpServer(IServerFeedbackProvider feedbackProvider)
 {
     _formatter = new CustomBinaryFormatter();
     MessageInitializer.RegisterMessagesWithSerializer(_formatter);
     _feedbackProvider = feedbackProvider;
 }
Exemplo n.º 21
0
 public TcpServer(IServerFeedbackProvider feedbackProvider)
 {
     _formatter = new CustomBinaryFormatter();
     MessageInitializer.RegisterMessagesWithSerializer(_formatter);
     _feedbackProvider = feedbackProvider;
 }
Exemplo n.º 22
0
        internal static List <HistoryRecord> GetRecords(ServerInfo Server, bool IsServer, DateTypes DateType, DateTime StartDate)
        {
            var records = new List <HistoryRecord>();
            var key     = GetKey(Server, IsServer);

            using (FileStream dateIndexStream = new FileStream(GetFile(false, true), FileMode.OpenOrCreate))
            {
                using (FileStream dateContentStream = new FileStream(GetFile(false, false), FileMode.OpenOrCreate))
                {
                    var dateFormatter = new CustomBinaryFormatter(dateIndexStream, dateContentStream);
                    dateFormatter.Register <HistoryDate>(1);

                    var endDate      = DateTime.Now.Date;
                    var samplingSpan = 1;
                    switch (DateType)
                    {
                    case DateTypes.Hour:
                        endDate      = StartDate.AddDays(1);
                        samplingSpan = 1;
                        break;

                    case DateTypes.Day:
                        endDate      = StartDate.AddDays(1);
                        samplingSpan = 24;
                        break;

                    case DateTypes.Week:
                        endDate      = StartDate.AddDays(7);
                        samplingSpan = 7 * 24;
                        break;

                    case DateTypes.Month:
                        endDate      = StartDate.AddMonths(1);
                        samplingSpan = 31 * 24;
                        break;

                    case DateTypes.Year:
                        endDate      = StartDate.AddYears(1);
                        samplingSpan = 365 * 24;
                        break;

                    default:
                        break;
                    }
                    var count = dateFormatter.Count;
                    System.Diagnostics.Debug.WriteLine("all date count:" + count);
                    System.Diagnostics.Debug.WriteLine("start date:" + StartDate);
                    var dates = new List <HistoryDate>();
                    for (long i = 0; i < count; i++)
                    {
                        var date     = dateFormatter.Deserialize <HistoryDate>(false);
                        var dateTime = DateTime.Parse(date.Date);
                        System.Diagnostics.Debug.WriteLine("current date:" + dateTime);
                        if (StartDate.Date <= dateTime && dateTime <= endDate)
                        {
                            dates.Add(date);
                        }
                    }
                    System.Diagnostics.Debug.WriteLine("valid date count:" + dates.Count);
                    if (dates.Count > 0)
                    {
                        var start = dates.Aggregate((d1, d2) => DateTime.Parse(d1.Date) < DateTime.Parse(d2.Date) ? d1 : d2);
                        var end   = dates.Aggregate((d1, d2) => DateTime.Parse(d1.Date) > DateTime.Parse(d2.Date) ? d1 : d2);

                        using (FileStream dataIndexStream = new FileStream(GetFile(true, true), FileMode.OpenOrCreate))
                        {
                            using (FileStream dataContentStream = new FileStream(GetFile(true, false), FileMode.OpenOrCreate))
                            {
                                var historyFormatter = new CustomBinaryFormatter(dataIndexStream, dataContentStream);
                                historyFormatter.Register <HistoryRecord>(1);

                                for (long i = start.Index; i < end.Index; i += samplingSpan)
                                {
                                    historyFormatter.MoveTo(i);
                                    var record = historyFormatter.Deserialize <HistoryRecord>(false);
                                    if (record.Key == key)
                                    {
                                        records.Add(record);
                                    }
                                }
                                historyFormatter.Close();
                                dataContentStream.Close();
                            }
                            dataIndexStream.Close();
                        }
                    }
                    dateFormatter.Close();
                    dateContentStream.Close();
                }
                dateIndexStream.Close();
            }
            return(records);
        }