Логирование, багфиксы, добавил мониторин /proc/mdstat. Юнит для systemd
This commit is contained in:
+27
-6
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
@@ -20,11 +21,14 @@ namespace Barsik
|
||||
|
||||
internal void Run()
|
||||
{
|
||||
var logger = LogManager.GetCurrentClassLogger();
|
||||
logger.Info("Accepting connections on port " + Port);
|
||||
var listener = new TcpListener(IPAddress.Any, Port);
|
||||
listener.Start();
|
||||
while (true)
|
||||
{
|
||||
var client = listener.AcceptTcpClient();
|
||||
logger.Info("Accepted connection from " + client.Client.RemoteEndPoint);
|
||||
var worker = new ModbusServerWorker(registers, client);
|
||||
Thread clientThread = new Thread(new ThreadStart(worker.Run));
|
||||
clientThread.Start();
|
||||
@@ -38,6 +42,7 @@ namespace Barsik
|
||||
|
||||
private RegistersContainer registers;
|
||||
private TcpClient client;
|
||||
private static Logger logger = LogManager.GetCurrentClassLogger();
|
||||
public ModbusServerWorker(RegistersContainer registers, TcpClient client)
|
||||
{
|
||||
this.registers = registers;
|
||||
@@ -52,6 +57,7 @@ namespace Barsik
|
||||
|
||||
public void Run()
|
||||
{
|
||||
logger.Debug("Working with client");
|
||||
received = new List<byte>();
|
||||
try
|
||||
{
|
||||
@@ -63,11 +69,13 @@ namespace Barsik
|
||||
readCompleted.Reset();
|
||||
stream.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(this.OnReadCompleted), this);
|
||||
readCompleted.WaitOne();
|
||||
if (currentReceived < 0)
|
||||
if (currentReceived <= 0)
|
||||
{
|
||||
logger.Debug("Received no data, closing ");
|
||||
client.Close();
|
||||
return;
|
||||
}
|
||||
logger.Debug("ProcessReceivedData of " + received.Count);
|
||||
ProcessReceivedData();
|
||||
}
|
||||
}
|
||||
@@ -75,6 +83,11 @@ namespace Barsik
|
||||
{
|
||||
client.Close();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (stream != null) stream.Dispose();
|
||||
client.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessReceivedData()
|
||||
@@ -123,12 +136,20 @@ namespace Barsik
|
||||
|
||||
private void OnReadCompleted(IAsyncResult ar)
|
||||
{
|
||||
currentReceived = stream.EndRead(ar);
|
||||
lock (received)
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < currentReceived; i++) received.Add(buffer[i]);
|
||||
currentReceived = stream.EndRead(ar);
|
||||
lock (received)
|
||||
{
|
||||
for (int i = 0; i < currentReceived; i++) received.Add(buffer[i]);
|
||||
}
|
||||
readCompleted.Set();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
logger.Info("Error receiving " + e);
|
||||
currentReceived = -1;
|
||||
}
|
||||
readCompleted.Set();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user