Add initial code

This commit is contained in:
Audrius Butkevicius
2015-06-24 12:39:46 +01:00
parent a98824b4cf
commit f376c79f7f
7 changed files with 1063 additions and 0 deletions

53
cmd/relaysrv/utils.go Normal file
View File

@@ -0,0 +1,53 @@
// Copyright (C) 2015 Audrius Butkevicius and Contributors (see the CONTRIBUTORS file).
package main
import (
"errors"
"net"
"time"
)
func setTCPOptions(conn net.Conn) error {
tcpConn, ok := conn.(*net.TCPConn)
if !ok {
return errors.New("Not a TCP connection")
}
if err := tcpConn.SetLinger(0); err != nil {
return err
}
if err := tcpConn.SetNoDelay(true); err != nil {
return err
}
if err := tcpConn.SetKeepAlivePeriod(60 * time.Second); err != nil {
return err
}
if err := tcpConn.SetKeepAlive(true); err != nil {
return err
}
return nil
}
func sendMessage(msg message, conn net.Conn) error {
header, err := msg.header.MarshalXDR()
if err != nil {
return err
}
err = conn.SetWriteDeadline(time.Now().Add(networkTimeout))
if err != nil {
return err
}
_, err = conn.Write(header)
if err != nil {
return err
}
_, err = conn.Write(msg.payload)
if err != nil {
return err
}
return nil
}