Skip to content

Commit ade04a5

Browse files
committed
added DialUDPContext constructor
1 parent b8d5f2b commit ade04a5

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

udp.go

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ type UDPConn struct {
2424

2525
// DialUDP creates a new OSC connection over UDP.
2626
func DialUDP(network string, laddr, raddr *net.UDPAddr) (*UDPConn, error) {
27+
return DialUDPContext(context.Background(), network, laddr, raddr)
28+
}
29+
30+
// DialUDPContext returns a new OSC connection over UDP that can be canceled with the provided context.
31+
func DialUDPContext(ctx context.Context, network string, laddr, raddr *net.UDPAddr) (*UDPConn, error) {
2732
conn, err := net.DialUDP(network, laddr, raddr)
2833
if err != nil {
2934
return nil, err

udp_test.go

+14-7
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,26 @@ func TestListenUDP(t *testing.T) {
4343
}
4444
}
4545

46-
func TestUDPContext(t *testing.T) {
47-
udpAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12345")
46+
func TestDialUDPContext(t *testing.T) {
47+
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12345")
4848
if err != nil {
4949
t.Fatal(err)
5050
}
51-
c, err := DialUDP("udp", nil, udpAddr)
51+
laddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
5252
if err != nil {
5353
t.Fatal(err)
5454
}
55-
ctx := context.TODO()
56-
c.SetContext(ctx)
57-
if ctx2 := c.Context(); ctx2 != ctx {
58-
t.Fatalf("expected %+v to be %+v", ctx2, ctx)
55+
c, err := DialUDPContext(context.Background(), "udp", laddr, raddr)
56+
if err != nil {
57+
t.Fatal(err)
58+
}
59+
ctxTimeout, _ := context.WithTimeout(c.Context(), 20*time.Millisecond)
60+
c.SetContext(ctxTimeout)
61+
if c.Context() != ctxTimeout {
62+
t.Fatalf("expected %+v to be %+v", ctxTimeout, c.Context())
63+
}
64+
if err := c.Serve(Dispatcher{}); err != context.DeadlineExceeded {
65+
t.Fatalf("expected context.DeadlineExceeded, got %+v", err)
5966
}
6067
}
6168

0 commit comments

Comments
 (0)