setbuffer_linux.go 633 B

1234567891011121314151617181920212223
  1. //+build linux
  2. package socket
  3. import "golang.org/x/sys/unix"
  4. // setReadBuffer wraps the SO_RCVBUF{,FORCE} setsockopt(2) options.
  5. func (c *Conn) setReadBuffer(bytes int) error {
  6. err := c.SetsockoptInt(unix.SOL_SOCKET, unix.SO_RCVBUFFORCE, bytes)
  7. if err != nil {
  8. err = c.SetsockoptInt(unix.SOL_SOCKET, unix.SO_RCVBUF, bytes)
  9. }
  10. return err
  11. }
  12. // setWriteBuffer wraps the SO_SNDBUF{,FORCE} setsockopt(2) options.
  13. func (c *Conn) setWriteBuffer(bytes int) error {
  14. err := c.SetsockoptInt(unix.SOL_SOCKET, unix.SO_SNDBUFFORCE, bytes)
  15. if err != nil {
  16. err = c.SetsockoptInt(unix.SOL_SOCKET, unix.SO_SNDBUF, bytes)
  17. }
  18. return err
  19. }