Refactor if to switch case

This commit is contained in:
Andy Wang 2020-04-03 22:46:07 +01:00
parent 75ab568cda
commit 766c27a129
1 changed files with 9 additions and 3 deletions

View File

@ -77,13 +77,14 @@ func (sb *switchboard) send(data []byte, connId *uint32) (n int, err error) {
return 0, errBrokenSwitchboard return 0, errBrokenSwitchboard
} }
if sb.strategy == UNIFORM_SPREAD { switch sb.strategy {
case UNIFORM_SPREAD:
_, conn, err := sb.pickRandConn() _, conn, err := sb.pickRandConn()
if err != nil { if err != nil {
return 0, errBrokenSwitchboard return 0, errBrokenSwitchboard
} }
return writeAndRegUsage(conn, data) return writeAndRegUsage(conn, data)
} else { case FIXED_CONN_MAPPING:
connI, ok := sb.conns.Load(*connId) connI, ok := sb.conns.Load(*connId)
conn := connI.(net.Conn) conn := connI.(net.Conn)
if ok { if ok {
@ -96,8 +97,9 @@ func (sb *switchboard) send(data []byte, connId *uint32) (n int, err error) {
connId = &newConnId connId = &newConnId
return writeAndRegUsage(conn, data) return writeAndRegUsage(conn, data)
} }
default:
return 0, errors.New("unsupported traffic distribution strategy")
} }
} }
// returns a random connId // returns a random connId
@ -123,6 +125,10 @@ func (sb *switchboard) pickRandConn() (uint32, net.Conn, error) {
c++ c++
return true return true
}) })
// if len(sb.conns) is 0
if conn == nil {
return 0, nil, errBrokenSwitchboard
}
return id, conn, nil return id, conn, nil
} }