Beispiel #1
0
 /// <summary>
 /// Метод осуществляет отправку информации о производительности. При неудачной отправке пакет записывается в список неотправленных пакетов
 /// и включается таймер повторной отправки.
 /// </summary>
 /// <param name="performance">Информация о производительности переданная через класс Performance.</param>
 public void SendPerformance(Performance performance)
 {
     var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     var jsonObj = JsonConvert.SerializeObject(performance);
     var buffer = GetPostMessage(jsonObj);
     try
     {
         socket.Connect(ServerEndPoint);
         socket.Send(buffer);
         var responceBuffer = new byte[1024];
         var received = socket.Receive(responceBuffer);
         var responce = Encoding.UTF8.GetString(responceBuffer, 0, received);
         if (!responce.EndsWith("OK"))
             throw new Exception("Сервер не подтвердил получение");
         Console.WriteLine("Пакет отправлен успешно.");
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         lock (_unsentPackets)
         {
             _unsentPackets.Add(buffer);
             if (!_isDisposed && !_sendingTimer.Enabled)
                 _sendingTimer.Start();
         }
     }
     finally
     {
         if(socket.Connected)
             socket.Shutdown(SocketShutdown.Both);
         socket.Close();
         socket.Dispose();
     }
 }
Beispiel #2
0
 //Метод, который вызывается всякий раз, когда наступает событие считывания информации о производительности
 private static void SendPerformance(object sender, Performance performance)
 {
     Console.WriteLine("Сформирован отчёт от {0}", performance.Time);
     SenderModule.SendPerformance(performance);
 }
Beispiel #3
0
 //Метод, вызывающий событие GotPerformance.
 protected virtual void OnGotPerformance(Performance e)
 {
     GotPerformance?.Invoke(this, e);
 }
Beispiel #4
0
 //Метод, который отрабатывается всякий раз, когд интервал таймера истёк.
 private void GetPerformance(object sender, ElapsedEventArgs elapsedEventArgs)
 {
     var currentPerformance = new Performance(DateTime.Now, ProcessorLoad, AvailablePhysicalMemory,
         TotalPhysicalMemory, DiskCapacity, DiskFreeSpace);
     OnGotPerformance(currentPerformance);
 }
Beispiel #5
0
 //Метод, вызывающий событие GotPerformance.
 protected virtual void OnGotPerformance(Performance e)
 {
     GotPerformance?.Invoke(this, e);
 }
Beispiel #6
0
 //Метод, который вызывается всякий раз, когда наступает событие считывания информации о производительности
 private static void SendPerformance(object sender, Performance performance)
 {
     Console.WriteLine("Сформирован отчёт от {0}", performance.Time);
     SenderModule.SendPerformance(performance);
 }