@@ -87,9 +87,9 @@ struct ListenConfig:
8787 fn __init__ (out self , keep_alive : Duration = default_tcp_keep_alive):
8888 self ._keep_alive = keep_alive
8989
90- fn listen [network : NetworkType = NetworkType.tcp4](mut self , address : String ) raises -> NoTLSListener:
91- var local = parse_address(network, address)
92- var addr = TCPAddr(local[0 ], local[1 ])
90+ fn listen [network : NetworkType = NetworkType.tcp4](mut self , address : StringLiteral ) raises -> NoTLSListener:
91+ var local = parse_address(network, address.as_bytes() )
92+ var addr = TCPAddr(str ( local[0 ]) , local[1 ])
9393 var socket : Socket[TCPAddr]
9494 try :
9595 socket = Socket[TCPAddr]()
@@ -188,10 +188,10 @@ struct TCPConnection:
188188 return self .socket.remote_address()
189189
190190
191- struct UDPConnection :
192- var socket : Socket[UDPAddr]
191+ struct UDPConnection[network: NetworkType] :
192+ var socket : Socket[UDPAddr[network] ]
193193
194- fn __init__ (out self , owned socket : Socket[UDPAddr]):
194+ fn __init__ (out self , owned socket : Socket[UDPAddr[network] ]):
195195 self .socket = socket^
196196
197197 fn __moveinit__ (out self , owned existing : Self):
@@ -268,10 +268,10 @@ struct UDPConnection:
268268 fn is_closed (self ) -> Bool:
269269 return self .socket._closed
270270
271- fn local_addr (self ) -> ref [self .socket._local_address] UDPAddr:
271+ fn local_addr (self ) -> ref [self .socket._local_address] UDPAddr[network] :
272272 return self .socket.local_address()
273273
274- fn remote_addr (self ) -> ref [self .socket._remote_address] UDPAddr:
274+ fn remote_addr (self ) -> ref [self .socket._remote_address] UDPAddr[network] :
275275 return self .socket.remote_address()
276276
277277fn create_connection (host : String, port : UInt16) raises -> TCPConnection:
@@ -297,7 +297,7 @@ fn create_connection(host: String, port: UInt16) raises -> TCPConnection:
297297
298298 return TCPConnection(socket^ )
299299
300- fn listen_udp (local_address : UDPAddr) raises -> UDPConnection:
300+ fn listen_udp [ network : NetworkType = NetworkType.udp4] (local_address : UDPAddr) raises -> UDPConnection[network] :
301301 """ Creates a new UDP listener.
302302
303303 Args:
@@ -309,12 +309,12 @@ fn listen_udp(local_address: UDPAddr) raises -> UDPConnection:
309309 Raises:
310310 Error: If the address is invalid or failed to bind the socket.
311311 """
312- var socket = Socket[UDPAddr](socket_type = SOCK_DGRAM )
312+ var socket = Socket[UDPAddr[network] ](socket_type = SOCK_DGRAM )
313313 socket.bind(local_address.ip, local_address.port)
314- return UDPConnection(socket^ )
314+ return UDPConnection[network] (socket^ )
315315
316316
317- fn listen_udp (local_address : String ) raises -> UDPConnection:
317+ fn listen_udp [ network : NetworkType = NetworkType.udp4] (local_address : StringLiteral ) raises -> UDPConnection[network] :
318318 """ Creates a new UDP listener.
319319
320320 Args:
@@ -326,11 +326,11 @@ fn listen_udp(local_address: String) raises -> UDPConnection:
326326 Raises:
327327 Error: If the address is invalid or failed to bind the socket.
328328 """
329- var address = parse_address(NetworkType.udp4, local_address)
330- return listen_udp(UDPAddr( address[0 ], address[1 ]))
329+ var address = parse_address(NetworkType.udp4, local_address.as_bytes() )
330+ return listen_udp[network] (UDPAddr[network]( str ( address[0 ]) , address[1 ]))
331331
332332
333- fn listen_udp (host : String, port : UInt16) raises -> UDPConnection:
333+ fn listen_udp [ network : NetworkType = NetworkType.udp4] (host : String, port : UInt16) raises -> UDPConnection[network] :
334334 """ Creates a new UDP listener.
335335
336336 Args:
@@ -343,10 +343,10 @@ fn listen_udp(host: String, port: UInt16) raises -> UDPConnection:
343343 Raises:
344344 Error: If the address is invalid or failed to bind the socket.
345345 """
346- return listen_udp(UDPAddr(host, port))
346+ return listen_udp[network] (UDPAddr[network] (host, port))
347347
348348
349- fn dial_udp (local_address : UDPAddr) raises -> UDPConnection:
349+ fn dial_udp [ network : NetworkType = NetworkType.udp4] (local_address : UDPAddr[network] ) raises -> UDPConnection[network] :
350350 """ Connects to the address on the named network. The network must be "udp", "udp4", or "udp6".
351351
352352 Args:
@@ -358,10 +358,10 @@ fn dial_udp(local_address: UDPAddr) raises -> UDPConnection:
358358 Raises:
359359 Error: If the network type is not supported or failed to connect to the address.
360360 """
361- return UDPConnection(Socket[UDPAddr](local_address = local_address, socket_type = SOCK_DGRAM ))
361+ return UDPConnection(Socket[UDPAddr[network] ](local_address = local_address, socket_type = SOCK_DGRAM ))
362362
363363
364- fn dial_udp ( network : NetworkType, local_address : String ) raises -> UDPConnection:
364+ fn dial_udp [ network : NetworkType = NetworkType.udp4]( local_address : StringLiteral ) raises -> UDPConnection[network] :
365365 """ Connects to the address on the named network. The network must be "udp", "udp4", or "udp6".
366366
367367 Args:
@@ -373,11 +373,11 @@ fn dial_udp(network: NetworkType, local_address: String) raises -> UDPConnection
373373 Raises:
374374 Error: If the network type is not supported or failed to connect to the address.
375375 """
376- var address = parse_address(network, local_address)
377- return dial_udp(UDPAddr( network, address[0 ], address[1 ]))
376+ var address = parse_address(network, local_address.as_bytes() )
377+ return dial_udp[network] (UDPAddr[ network]( str ( address[0 ]) , address[1 ]))
378378
379379
380- fn dial_udp (host : String, port : UInt16) raises -> UDPConnection:
380+ fn dial_udp [ network : NetworkType = NetworkType.udp4] (host : String, port : UInt16) raises -> UDPConnection[network] :
381381 """ Connects to the address on the udp network.
382382
383383 Args:
@@ -390,4 +390,4 @@ fn dial_udp(host: String, port: UInt16) raises -> UDPConnection:
390390 Raises:
391391 Error: If failed to connect to the address.
392392 """
393- return dial_udp(UDPAddr(host, port))
393+ return dial_udp[network] (UDPAddr[network] (host, port))
0 commit comments