Skip to content

Commit 201b61d

Browse files
authored
Merge pull request #6 from LucHeart/cancellation
CancellationToken support for .NET8 and .NET9
2 parents 8a4717d + 1eddd51 commit 201b61d

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

CoreOSC/IOscListener.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
using System.Net;
2+
using System.Threading;
23
using System.Threading.Tasks;
34

45
namespace LucHeart.CoreOSC;
56

67
public interface IOscListener
78
{
8-
public Task<OscMessage> ReceiveMessageAsync();
9+
public Task<OscMessage> ReceiveMessageAsync(CancellationToken ct);
910

10-
public Task<(OscMessage Message, IPEndPoint EndPoint)> ReceiveMessageExAsync();
11+
public Task<(OscMessage Message, IPEndPoint EndPoint)> ReceiveMessageExAsync(CancellationToken ct);
1112

12-
public Task<OscBundle> ReceiveBundleAsync();
13+
public Task<OscBundle> ReceiveBundleAsync(CancellationToken ct);
1314

14-
public Task<(OscBundle Bundle, IPEndPoint EndPoint)> ReceiveBundleExAsync();
15+
public Task<(OscBundle Bundle, IPEndPoint EndPoint)> ReceiveBundleExAsync(CancellationToken ct);
1516
}

CoreOSC/OscListener.cs

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Net;
44
using System.Net.Sockets;
5+
using System.Threading;
56
using System.Threading.Tasks;
67

78
namespace LucHeart.CoreOSC;
@@ -42,14 +43,18 @@ public OscListener(IPEndPoint listenerEndPoint)
4243
}
4344
}
4445

45-
public async Task<OscMessage> ReceiveMessageAsync()
46+
public async Task<OscMessage> ReceiveMessageAsync(CancellationToken ct = default)
4647
{
4748
if (EnableTransparentBundleToMessageConversion)
4849
{
4950
if (MessageQueue.Count > 0)
5051
return MessageQueue.Dequeue();
5152

53+
#if !NETSTANDARD
54+
var receiveResult = await UdpClient.ReceiveAsync(ct);
55+
#else
5256
var receiveResult = await UdpClient.ReceiveAsync();
57+
#endif
5358

5459
if (!OscBundle.IsBundle(receiveResult.Buffer))
5560
return OscMessage.ParseMessage(receiveResult.Buffer);
@@ -62,29 +67,44 @@ public async Task<OscMessage> ReceiveMessageAsync()
6267
}
6368
else
6469
{
70+
#if !NETSTANDARD
71+
var receiveResult = await UdpClient.ReceiveAsync(ct);
72+
#else
6573
var receiveResult = await UdpClient.ReceiveAsync();
74+
#endif
6675
return OscMessage.ParseMessage(receiveResult.Buffer);
6776
}
6877
}
6978

70-
public async Task<(OscMessage Message, IPEndPoint EndPoint)> ReceiveMessageExAsync()
79+
public async Task<(OscMessage Message, IPEndPoint EndPoint)> ReceiveMessageExAsync(CancellationToken ct = default)
7180
{
81+
#if !NETSTANDARD
82+
var receiveResult = await UdpClient.ReceiveAsync(ct);
83+
#else
7284
var receiveResult = await UdpClient.ReceiveAsync();
85+
#endif
7386
return (OscMessage.ParseMessage(receiveResult.Buffer), receiveResult.RemoteEndPoint);
7487
}
7588

76-
public async Task<OscBundle> ReceiveBundleAsync()
89+
public async Task<OscBundle> ReceiveBundleAsync(CancellationToken ct = default)
7790
{
91+
#if !NETSTANDARD
92+
var receiveResult = await UdpClient.ReceiveAsync(ct);
93+
#else
7894
var receiveResult = await UdpClient.ReceiveAsync();
95+
#endif
7996
return OscBundle.ParseBundle(receiveResult.Buffer);
8097
}
8198

82-
public async Task<(OscBundle Bundle, IPEndPoint EndPoint)> ReceiveBundleExAsync()
99+
public async Task<(OscBundle Bundle, IPEndPoint EndPoint)> ReceiveBundleExAsync(CancellationToken ct = default)
83100
{
101+
#if !NETSTANDARD
102+
var receiveResult = await UdpClient.ReceiveAsync(ct);
103+
#else
84104
var receiveResult = await UdpClient.ReceiveAsync();
105+
#endif
85106
return (OscBundle.ParseBundle(receiveResult.Buffer), receiveResult.RemoteEndPoint);
86107
}
87-
88108
public void Dispose()
89109
{
90110
UdpClient.Dispose();

0 commit comments

Comments
 (0)