From c079990acaf58258067a1154ddaffba044789473 Mon Sep 17 00:00:00 2001 From: smallnest Date: Mon, 30 Oct 2017 19:53:33 +0800 Subject: [PATCH] fix kcp/quic issue of client. Use their tags instead of udp --- README.md | 2 +- client/connection_kcp.go | 22 +++++++++++++++++++ client/connection_nonkcp.go | 12 ++++++++++ ...nection_basic.go => connection_nonquic.go} | 6 +---- .../{connection_udp.go => connection_quic.go} | 16 +------------- client/selector.go | 1 + server/server.go | 1 - 7 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 client/connection_kcp.go create mode 100644 client/connection_nonkcp.go rename client/{connection_basic.go => connection_nonquic.go} (55%) rename client/{connection_udp.go => connection_quic.go} (58%) diff --git a/README.md b/README.md index 66d3876e..0d469262 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ The below is a simple example. // define example.Arith …… - s := server.Server{} + s := server.NewServer() s.RegisterName("Arith", new(example.Arith), "") s.Serve("tcp", addr) diff --git a/client/connection_kcp.go b/client/connection_kcp.go new file mode 100644 index 00000000..42ef1284 --- /dev/null +++ b/client/connection_kcp.go @@ -0,0 +1,22 @@ +// +build kcp + +package client + +import ( + "net" + + kcp "github.com/xtaci/kcp-go" +) + +func newDirectKCPConn(c *Client, network, address string) (net.Conn, error) { + var conn net.Conn + var err error + + conn, err = kcp.DialWithOptions(address, c.option.Block.(kcp.BlockCrypt), 10, 3) + + if err != nil { + return nil, err + } + + return conn, nil +} diff --git a/client/connection_nonkcp.go b/client/connection_nonkcp.go new file mode 100644 index 00000000..8caa9124 --- /dev/null +++ b/client/connection_nonkcp.go @@ -0,0 +1,12 @@ +// +build !kcp + +package client + +import ( + "errors" + "net" +) + +func newDirectKCPConn(c *Client, network, address string) (net.Conn, error) { + return nil, errors.New("kcp unsupported") +} diff --git a/client/connection_basic.go b/client/connection_nonquic.go similarity index 55% rename from client/connection_basic.go rename to client/connection_nonquic.go index 5b1e81b8..baa4e004 100644 --- a/client/connection_basic.go +++ b/client/connection_nonquic.go @@ -1,4 +1,4 @@ -// +build !udp +// +build !quic package client @@ -7,10 +7,6 @@ import ( "net" ) -func newDirectKCPConn(c *Client, network, address string) (net.Conn, error) { - return nil, errors.New("kcp unsupported") -} - func newDirectQuicConn(c *Client, network, address string) (net.Conn, error) { return nil, errors.New("quic unsupported") } diff --git a/client/connection_udp.go b/client/connection_quic.go similarity index 58% rename from client/connection_udp.go rename to client/connection_quic.go index c5077ba5..63465c0a 100644 --- a/client/connection_udp.go +++ b/client/connection_quic.go @@ -1,4 +1,4 @@ -// +build udp +// +build quic package client @@ -7,22 +7,8 @@ import ( "net" quicconn "github.com/marten-seemann/quic-conn" - kcp "github.com/xtaci/kcp-go" ) -func newDirectKCPConn(c *Client, network, address string) (net.Conn, error) { - var conn net.Conn - var err error - - conn, err = kcp.DialWithOptions(address, c.option.Block.(kcp.BlockCrypt), 10, 3) - - if err != nil { - return nil, err - } - - return conn, nil -} - func newDirectQuicConn(c *Client, network, address string) (net.Conn, error) { var conn net.Conn var err error diff --git a/client/selector.go b/client/selector.go index 59345e33..0e55c005 100644 --- a/client/selector.go +++ b/client/selector.go @@ -89,6 +89,7 @@ func (s *roundRobinSelector) Select(ctx context.Context, servicePath, serviceMet i := s.i i = i % len(ss) s.i = i + 1 + return ss[i] } diff --git a/server/server.go b/server/server.go index 8283aa94..0b710a08 100644 --- a/server/server.go +++ b/server/server.go @@ -85,7 +85,6 @@ func NewServer(options ...OptionFn) *Server { } for _, op := range options { - fmt.Printf("%T\n", op) op(s) }