-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUntitled-1.txt
62 lines (53 loc) · 1.34 KB
/
Untitled-1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class NetworkClient
{
private Socket socket;
private readonly object _lock = new object();
private void Send(string message)
{
try
{
var data = Encoding.ASCII.GetBytes(message);
EnsureSocket();
_socket?.SendTo(data, _endPoint);
}
catch (Exception ex)
{
if (_logger.IsEnabled(LogLevel.Error))
{
_logger.LogError(ex, "An error occurred while sending the metrics: {Message}", ex.Message);
}
ResetUdpClient();
}
}
private void EnsureSocket()
{
if (_socket != null)
{
return;
}
lock (_lock)
{
if (_socket == null)
{
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
}
}
}
private void ResetUdpClient()
{
if (_socket == null)
{
} return;
lock (_lock) {
if (_socket == null)
return;
try {
_socket.Close();
} catch (Exception ex) {
_logger.LogError(ex, "An error occurred while calling Close() on the socket.");
} finally {
_socket = null;
}
}
}
}