1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- namespace MinicsConsole.Helper.RawDataFilter;
- public class Mini8Provider : IMini8Provider, IMini8DataFilter, IDisposable
- {
- public Mini8Provider(byte mini8Index, ILog log, BasicInfo basicInfo, IDictionary<byte, ChannelData> channels, Mini8DataDispatcher dataDispatcher)
- {
- _log = log;
- _channels = channels;
- _mini8Index = mini8Index;
- _dataDispatcher = dataDispatcher;
- _Mini8DataQueue = new();
- _DataBaseHelper = new(mini8Index, log);
- _ApplyAutoTurnLayer = new(mini8Index, log);
- _DataRecorderLayer = new(mini8Index, log, dataDispatcher);
- _AlarmLayer = new(mini8Index, log, basicInfo, dataDispatcher)
- {
- DataBaseHelper = _DataBaseHelper
- };
- _DataRecorderLayer.DataBaseHelper = _DataBaseHelper;
- _ = (IMini8DataFilter)this >> _Mini8DataQueue >> _DataRecorderLayer >> _ApplyAutoTurnLayer >> _AlarmLayer;
- }
- private readonly ILog _log;
- private readonly byte _mini8Index;
- private readonly Mini8DataDispatcher _dataDispatcher;
- private readonly IDictionary<byte, ChannelData> _channels;
- private readonly ChannelDataBaseHelper _DataBaseHelper;
- private readonly AlarmHelperLayer _AlarmLayer;
- private readonly Mini8DataQueue _Mini8DataQueue;
- private readonly Mini8DataRecorderLayer _DataRecorderLayer;
- private readonly AutoApplyAutoTurnLayer _ApplyAutoTurnLayer;
- public bool IsConnect { get; private set; } = false;
- public IDataSender? NextSender { get; set; }
- public IORM ORM { set { _DataBaseHelper.SetORM(value); } }
- public IMini8Communicator Mini8Communicator { set { _ApplyAutoTurnLayer.Sender = value; } }
- void IMini8Provider.ChannelInfoNotify(byte channel, Mini8Output mini8Output)
- {
- if (!_channels.TryGetValue(channel, out ChannelData? channelData) || channelData is null)
- return;
- NextSender?.Send(mini8Output, channelData, default);
- }
- void IMini8ConnectNotify.OnConnected(string IP, int port)
- {
- IsConnect = true;
- _log.Info($"{IP}:{port} Connected");
- _dataDispatcher.Mini8Connect(_mini8Index);
- }
- void IMini8ConnectNotify.OnDisconnected(string IP, int port)
- {
- IsConnect = false;
- _log.Warning($"{IP}:{port} Disconnected");
- _dataDispatcher.Mini8Disconnect(_mini8Index);
- }
- public void Dispose()
- {
- _Mini8DataQueue?.Dispose();
- }
- }
|