OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
TcpClientOsdpConnection.cs
1using System.Net.Sockets;
2using System.Threading;
3using System.Threading.Tasks;
4
6{
10 {
11 private readonly int _portNumber;
12 private readonly string _server;
13 private TcpClient _tcpClient;
14
21 public TcpClientOsdpConnection(string server, int portNumber, int baudRate) : base(baudRate)
22 {
23 _tcpClient = new TcpClient();
24 _server = server;
25 _portNumber = portNumber;
26 }
27
29 public override bool IsOpen
30 {
31 get
32 {
33 var tcpClient = _tcpClient;
34 return tcpClient?.Connected ?? false;
35 }
36 }
37
39 public override async Task Open()
40 {
41 await Close();
42
43 _tcpClient = new TcpClient {NoDelay = true};
44 await _tcpClient.ConnectAsync(_server, _portNumber);
45 }
46
48 public override Task Close()
49 {
50 var tcpClient = _tcpClient;
51 _tcpClient = null;
52 if (_tcpClient?.Connected ?? false) tcpClient?.GetStream().Close();
53 tcpClient?.Close();
54 return Task.CompletedTask;
55 }
56
58 public override async Task WriteAsync(byte[] buffer)
59 {
60 if (!IsOpen) await Open();
61
62 var tcpClient = _tcpClient;
63
64 if (tcpClient != null)
65 {
66 await tcpClient.GetStream().WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
67 }
68 }
69
71 public override async Task<int> ReadAsync(byte[] buffer, CancellationToken token)
72 {
73 var tcpClient = _tcpClient;
74 if (tcpClient != null)
75 {
76 return await tcpClient.GetStream().ReadAsync(buffer, 0, buffer.Length, token).ConfigureAwait(false);
77 }
78
79 return 0;
80 }
81
83 public override string ToString()
84 {
85 return $"{_server}:{_portNumber}";
86 }
87 }
88}
OsdpConnection(int baudRate)
Creates an instance of OsdpConnection.
override Task Close()
Close the connection for communications.
override bool IsOpen
Is the connection open and ready to communicate.
override async Task WriteAsync(byte[] buffer)
Write to connection.
override async Task< int > ReadAsync(byte[] buffer, CancellationToken token)
Read from connection.Number of actual bytes read
override async Task Open()
Open the connection for communications.
TcpClientOsdpConnection(string server, int portNumber, int baudRate)
Initializes a new instance of the TcpClientOsdpConnection class.