blob: 29a94b82bf77405695ff38801b6a453ba532656d [file] [log] [blame] [edit]
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net
import (
"runtime"
"syscall"
"syscall/zx/zxsocket"
"time"
)
func setNoDelay(fd *netFD, noDelay bool) error {
if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok {
err := sock.SetNoDelay(noDelay)
runtime.KeepAlive(fd)
return err
}
return syscall.ENOPROTOOPT
}
func setKeepAlivePeriod(fd *netFD, d time.Duration) error {
if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok {
// The socket option expects seconds so round to next highest second.
secs := uint32((d + time.Second - 1) / time.Second)
err := sock.SetKeepAlivePeriod(secs)
runtime.KeepAlive(fd)
return wrapSyscallError("setsockopt", err)
}
return syscall.ENOPROTOOPT
}