Skip to content

Commit

Permalink
fix: resolve the build failure on Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed Mar 28, 2021
1 parent 38a8605 commit 0b15aca
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 29 deletions.
24 changes: 1 addition & 23 deletions gnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import (
"github.com/panjf2000/gnet/errors"
"github.com/panjf2000/gnet/internal"
"github.com/panjf2000/gnet/internal/logging"
"github.com/panjf2000/gnet/internal/socket"
)

// Action is an action that occurs after the completion of an event.
Expand Down Expand Up @@ -273,28 +272,7 @@ func Serve(eventHandler EventHandler, protoAddr string, opts ...Option) (err err
network, addr := parseProtoAddr(protoAddr)

var ln *listener
var sockopts []socket.Option
if options.ReusePort {
sockopt := socket.Option{SetSockopt: socket.SetReuseport, Opt: 1}
sockopts = append(sockopts, sockopt)
}
if network == "tcp" && options.TCPNoDelay == TCPNoDelay {
sockopt := socket.Option{SetSockopt: socket.SetNoDelay, Opt: 1}
sockopts = append(sockopts, sockopt)
}
if network == "tcp" && options.TCPKeepAlive > 0 {
sockopt := socket.Option{SetSockopt: socket.SetKeepAlive, Opt: int(options.TCPKeepAlive / time.Second)}
sockopts = append(sockopts, sockopt)
}
if options.SocketRecvBuffer > 0 {
sockopt := socket.Option{SetSockopt: socket.SetRecvBuffer, Opt: options.SocketRecvBuffer}
sockopts = append(sockopts, sockopt)
}
if options.SocketSendBuffer > 0 {
sockopt := socket.Option{SetSockopt: socket.SetSendBuffer, Opt: options.SocketSendBuffer}
sockopts = append(sockopts, sockopt)
}
if ln, err = initListener(network, addr, sockopts...); err != nil {
if ln, err = initListener(network, addr, options); err != nil {
return
}
defer ln.close()
Expand Down
6 changes: 3 additions & 3 deletions gnet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ func testCodecServe(network, addr string, multicore, async bool, nclients int, r
codec: codec, workerPool: goroutine.Default(),
}
err = Serve(ts, network+"://"+addr, WithMulticore(multicore), WithTicker(true),
WithTCPKeepAlive(time.Minute*5), WithCodec(codec), WithReusePort(reuseport))
WithTCPKeepAlive(time.Minute*5), WithSocketRecvBuffer(8*1024), WithSocketSendBuffer(8*1024), WithCodec(codec), WithReusePort(reuseport))
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -605,7 +605,7 @@ func TestBadAddresses(t *testing.T) {
}

func TestTick(t *testing.T) {
testTick("tcp", ":9991", t)
testTick("tcp", ":9989", t)
}

type testTickServer struct {
Expand Down Expand Up @@ -635,7 +635,7 @@ func testTick(network, addr string, t *testing.T) {
}

func TestWakeConn(t *testing.T) {
testWakeConn("tcp", ":9991")
testWakeConn("tcp", ":9990")
}

type testWakeConnServer struct {
Expand Down
25 changes: 24 additions & 1 deletion listener_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

//go:build linux || freebsd || dragonfly || darwin
// +build linux freebsd dragonfly darwin

package gnet
Expand All @@ -26,6 +27,7 @@ import (
"net"
"os"
"sync"
"time"

"github.com/panjf2000/gnet/errors"
"github.com/panjf2000/gnet/internal/netpoll"
Expand Down Expand Up @@ -74,7 +76,28 @@ func (ln *listener) close() {
})
}

func initListener(network, addr string, sockopts ...socket.Option) (l *listener, err error) {
func initListener(network, addr string, options *Options) (l *listener, err error) {
var sockopts []socket.Option
if options.ReusePort {
sockopt := socket.Option{SetSockopt: socket.SetReuseport, Opt: 1}
sockopts = append(sockopts, sockopt)
}
if network == "tcp" && options.TCPNoDelay == TCPNoDelay {
sockopt := socket.Option{SetSockopt: socket.SetNoDelay, Opt: 1}
sockopts = append(sockopts, sockopt)
}
if network == "tcp" && options.TCPKeepAlive > 0 {
sockopt := socket.Option{SetSockopt: socket.SetKeepAlive, Opt: int(options.TCPKeepAlive / time.Second)}
sockopts = append(sockopts, sockopt)
}
if options.SocketRecvBuffer > 0 {
sockopt := socket.Option{SetSockopt: socket.SetRecvBuffer, Opt: options.SocketRecvBuffer}
sockopts = append(sockopts, sockopt)
}
if options.SocketSendBuffer > 0 {
sockopt := socket.Option{SetSockopt: socket.SetSendBuffer, Opt: options.SocketSendBuffer}
sockopts = append(sockopts, sockopt)
}
l = &listener{network: network, addr: addr, sockopts: sockopts}
err = l.normalize()
return
Expand Down
2 changes: 1 addition & 1 deletion listener_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (ln *listener) close() {
})
}

func initListener(network, addr string, _ bool) (l *listener, err error) {
func initListener(network, addr string, _ *Options) (l *listener, err error) {
l = &listener{network: network, addr: addr}
err = l.normalize()
return
Expand Down
2 changes: 1 addition & 1 deletion server_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func (svr *server) activateEventLoops(numEventLoop int) (err error) {
for i := 0; i < numEventLoop; i++ {
l := svr.ln
if i > 0 && svr.opts.ReusePort {
if l, err = initListener(svr.ln.network, svr.ln.addr, svr.ln.sockopts...); err != nil {
if l, err = initListener(svr.ln.network, svr.ln.addr, svr.opts); err != nil {
return
}
}
Expand Down

0 comments on commit 0b15aca

Please sign in to comment.