mirror of
https://github.com/vlang/v.git
synced 2025-09-09 15:27:05 -04:00
net: add read_ptr/2
(from read/1
) to UdpConn
for consistency with TcpConn
(#24000)
This commit is contained in:
parent
7bbe510a8d
commit
bd064dd695
@ -94,16 +94,16 @@ pub fn (mut c UdpConn) write_to_string(addr Addr, s string) !int {
|
|||||||
return c.write_to_ptr(addr, s.str, s.len)
|
return c.write_to_ptr(addr, s.str, s.len)
|
||||||
}
|
}
|
||||||
|
|
||||||
// read reads from the socket into buf up to buf.len returning the number of bytes read
|
// read_ptr reads from the socket into `buf_ptr` up to `len` bytes, returning the number of bytes read and the `Addr` read from.
|
||||||
pub fn (mut c UdpConn) read(mut buf []u8) !(int, Addr) {
|
pub fn (c &UdpConn) read_ptr(buf_ptr &u8, len int) !(int, Addr) {
|
||||||
mut addr := Addr{
|
mut addr := Addr{
|
||||||
addr: AddrData{
|
addr: AddrData{
|
||||||
Ip6: Ip6{}
|
Ip6: Ip6{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
len := sizeof(Addr)
|
addr_len := sizeof(Addr)
|
||||||
mut res := wrap_read_result(C.recvfrom(c.sock.handle, voidptr(buf.data), buf.len,
|
mut res := wrap_read_result(C.recvfrom(c.sock.handle, voidptr(buf_ptr), len, 0, voidptr(&addr),
|
||||||
0, voidptr(&addr), &len))!
|
&addr_len))!
|
||||||
if res > 0 {
|
if res > 0 {
|
||||||
return res, addr
|
return res, addr
|
||||||
}
|
}
|
||||||
@ -111,8 +111,8 @@ pub fn (mut c UdpConn) read(mut buf []u8) !(int, Addr) {
|
|||||||
if code == int(error_ewouldblock) {
|
if code == int(error_ewouldblock) {
|
||||||
c.wait_for_read()!
|
c.wait_for_read()!
|
||||||
// same setup as in tcp
|
// same setup as in tcp
|
||||||
res = wrap_read_result(C.recvfrom(c.sock.handle, voidptr(buf.data), buf.len, 0,
|
res = wrap_read_result(C.recvfrom(c.sock.handle, voidptr(buf_ptr), len, 0, voidptr(&addr),
|
||||||
voidptr(&addr), &len))!
|
&addr_len))!
|
||||||
res2 := socket_error(res)!
|
res2 := socket_error(res)!
|
||||||
return res2, addr
|
return res2, addr
|
||||||
} else {
|
} else {
|
||||||
@ -121,6 +121,11 @@ pub fn (mut c UdpConn) read(mut buf []u8) !(int, Addr) {
|
|||||||
return error('none')
|
return error('none')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read reads from the socket into buf up to buf.len returning the number of bytes read
|
||||||
|
pub fn (mut c UdpConn) read(mut buf []u8) !(int, Addr) {
|
||||||
|
return c.read_ptr(buf.data, buf.len)!
|
||||||
|
}
|
||||||
|
|
||||||
pub fn (c &UdpConn) read_deadline() !time.Time {
|
pub fn (c &UdpConn) read_deadline() !time.Time {
|
||||||
if c.read_deadline.unix() == 0 {
|
if c.read_deadline.unix() == 0 {
|
||||||
return c.read_deadline
|
return c.read_deadline
|
||||||
@ -160,7 +165,7 @@ pub fn (mut c UdpConn) set_write_timeout(t time.Duration) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@[inline]
|
@[inline]
|
||||||
pub fn (mut c UdpConn) wait_for_read() ! {
|
pub fn (c &UdpConn) wait_for_read() ! {
|
||||||
return wait_for_read(c.sock.handle, c.read_deadline, c.read_timeout)
|
return wait_for_read(c.sock.handle, c.read_deadline, c.read_timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user