Dreamine.PLC.Omron.Fins 1.0.1
Dreamine.PLC.Omron.Fins 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
FakeOmronFinsTransport.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.PLC.Abstractions.Results;
2
4
14{
23 private readonly Queue<byte[]> _responses = new();
24
33 public bool IsConnected { get; private set; }
34
43 public List<byte[]> SentRequests { get; } = [];
44
69 public void EnqueueResponse(byte[] response)
70 {
71 _responses.Enqueue(response);
72 }
73
98 public Task<PlcResult> ConnectAsync(CancellationToken cancellationToken = default)
99 {
100 IsConnected = true;
101 return Task.FromResult(PlcResult.Success());
102 }
103
128 public Task<PlcResult> DisconnectAsync(CancellationToken cancellationToken = default)
129 {
130 IsConnected = false;
131 return Task.FromResult(PlcResult.Success());
132 }
133
190 public Task<PlcResult<byte[]>> SendAndReceiveAsync(
191 IReadOnlyList<byte> requestFrame,
192 int receiveTimeoutMs,
193 int retryCount,
194 CancellationToken cancellationToken = default)
195 {
196 SentRequests.Add(requestFrame.ToArray());
197 if (_responses.Count == 0)
198 {
199 return Task.FromResult(PlcResult<byte[]>.Failure("No fake FINS response has been queued."));
200 }
201
202 return Task.FromResult(PlcResult<byte[]>.Success(_responses.Dequeue()));
203 }
204
221 public ValueTask DisposeAsync()
222 {
223 IsConnected = false;
224 return ValueTask.CompletedTask;
225 }
226}
Task< PlcResult > DisconnectAsync(CancellationToken cancellationToken=default)
Task< PlcResult > ConnectAsync(CancellationToken cancellationToken=default)
Task< PlcResult< byte[]> > SendAndReceiveAsync(IReadOnlyList< byte > requestFrame, int receiveTimeoutMs, int retryCount, CancellationToken cancellationToken=default)