Improve dollar IpAddress (#20729)
* Improve dollar * Improve dollar * Simplify, remove 1 if in for loop * ci * Update lib/pure/net.nim * Update lib/pure/net.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
parent
46eac22172
commit
f562a5c55c
2 changed files with 17 additions and 10 deletions
|
|
@ -116,6 +116,9 @@
|
||||||
- `std/uri.Uri` dollar `$` improved, precalculates the `string` result length from the `Uri`.
|
- `std/uri.Uri` dollar `$` improved, precalculates the `string` result length from the `Uri`.
|
||||||
|
|
||||||
|
|
||||||
|
- `std/net.IpAddress` dollar `$` improved, uses a fixed capacity for the `string` result based from the `IpAddressFamily`.
|
||||||
|
|
||||||
|
|
||||||
[//]: # "Additions:"
|
[//]: # "Additions:"
|
||||||
- Added ISO 8601 week date utilities in `times`:
|
- Added ISO 8601 week date utilities in `times`:
|
||||||
- Added `IsoWeekRange`, a range type for weeks in a week-based year.
|
- Added `IsoWeekRange`, a range type for weeks in a week-based year.
|
||||||
|
|
|
||||||
|
|
@ -480,8 +480,8 @@ proc parseIPv6Address(addressStr: string): IpAddress =
|
||||||
proc parseIpAddress*(addressStr: string): IpAddress =
|
proc parseIpAddress*(addressStr: string): IpAddress =
|
||||||
## Parses an IP address
|
## Parses an IP address
|
||||||
##
|
##
|
||||||
## Raises ValueError on error.
|
## Raises ValueError on error.
|
||||||
##
|
##
|
||||||
## For IPv4 addresses, only the strict form as
|
## For IPv4 addresses, only the strict form as
|
||||||
## defined in RFC 6943 is considered valid, see
|
## defined in RFC 6943 is considered valid, see
|
||||||
## https://datatracker.ietf.org/doc/html/rfc6943#section-3.1.1.
|
## https://datatracker.ietf.org/doc/html/rfc6943#section-3.1.1.
|
||||||
|
|
@ -1794,7 +1794,7 @@ proc sendTo*(socket: Socket, address: string, port: Port,
|
||||||
## This proc sends `data` to the specified `address`,
|
## This proc sends `data` to the specified `address`,
|
||||||
## which may be an IP address or a hostname, if a hostname is specified
|
## which may be an IP address or a hostname, if a hostname is specified
|
||||||
## this function will try each IP of that hostname.
|
## this function will try each IP of that hostname.
|
||||||
##
|
##
|
||||||
## Generally for use with connection-less (UDP) sockets.
|
## Generally for use with connection-less (UDP) sockets.
|
||||||
##
|
##
|
||||||
## If an error occurs an OSError exception will be raised.
|
## If an error occurs an OSError exception will be raised.
|
||||||
|
|
@ -1806,9 +1806,9 @@ proc sendTo*(socket: Socket, address: IpAddress, port: Port,
|
||||||
data: string, flags = 0'i32): int {.
|
data: string, flags = 0'i32): int {.
|
||||||
discardable, tags: [WriteIOEffect].} =
|
discardable, tags: [WriteIOEffect].} =
|
||||||
## This proc sends `data` to the specified `IpAddress` and returns
|
## This proc sends `data` to the specified `IpAddress` and returns
|
||||||
## the number of bytes written.
|
## the number of bytes written.
|
||||||
##
|
##
|
||||||
## Generally for use with connection-less (UDP) sockets.
|
## Generally for use with connection-less (UDP) sockets.
|
||||||
##
|
##
|
||||||
## If an error occurs an OSError exception will be raised.
|
## If an error occurs an OSError exception will be raised.
|
||||||
##
|
##
|
||||||
|
|
@ -1898,14 +1898,18 @@ proc `==`*(lhs, rhs: IpAddress): bool =
|
||||||
|
|
||||||
proc `$`*(address: IpAddress): string =
|
proc `$`*(address: IpAddress): string =
|
||||||
## Converts an IpAddress into the textual representation
|
## Converts an IpAddress into the textual representation
|
||||||
result = ""
|
|
||||||
case address.family
|
case address.family
|
||||||
of IpAddressFamily.IPv4:
|
of IpAddressFamily.IPv4:
|
||||||
for i in 0 .. 3:
|
result = newStringOfCap(16)
|
||||||
if i != 0:
|
result.addInt address.address_v4[0]
|
||||||
result.add('.')
|
result.add '.'
|
||||||
result.add($address.address_v4[i])
|
result.addInt address.address_v4[1]
|
||||||
|
result.add '.'
|
||||||
|
result.addInt address.address_v4[2]
|
||||||
|
result.add '.'
|
||||||
|
result.addInt address.address_v4[3]
|
||||||
of IpAddressFamily.IPv6:
|
of IpAddressFamily.IPv6:
|
||||||
|
result = newStringOfCap(48)
|
||||||
var
|
var
|
||||||
currentZeroStart = -1
|
currentZeroStart = -1
|
||||||
currentZeroCount = 0
|
currentZeroCount = 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue