@@ -3,9 +3,12 @@ package easytcp
33import (
44 "fmt"
55 "github.com/olekukonko/tablewriter"
6+ "github.com/spf13/cast"
7+ "io"
68 "os"
79 "reflect"
810 "runtime"
11+ "sort"
912)
1013
1114func newRouter () * Router {
@@ -117,16 +120,32 @@ func (r *Router) registerMiddleware(m ...MiddlewareFunc) {
117120
118121// printHandlers prints registered route handlers to console.
119122func (r * Router ) printHandlers (addr string ) {
120- fmt .Printf ("\n [EASYTCP ROUTE TABLE]:\n " )
121- table := tablewriter .NewWriter (os .Stdout )
123+ var w io.Writer = os .Stdout
124+
125+ _ , _ = fmt .Fprintf (w , "\n [EASYTCP] Message-Route Table: \n " )
126+ table := tablewriter .NewWriter (w )
122127 table .SetHeader ([]string {"Message ID" , "Route Handler" })
123128 table .SetAutoFormatHeaders (false )
124- for id , h := range r .handlerMapper {
129+
130+ // sort ids
131+ ids := make ([]interface {}, 0 , len (r .handlerMapper ))
132+ for id := range r .handlerMapper {
133+ ids = append (ids , id )
134+ }
135+ sort .Slice (ids , func (i , j int ) bool {
136+ a , b := cast .ToString (ids [i ]), cast .ToString (ids [j ])
137+ return a < b
138+ })
139+
140+ // add table row
141+ for _ , id := range ids {
142+ h := r .handlerMapper [id ]
125143 handlerName := runtime .FuncForPC (reflect .ValueOf (h ).Pointer ()).Name ()
126144 table .Append ([]string {fmt .Sprintf ("%v" , id ), handlerName })
127145 }
146+
128147 table .Render ()
129- fmt .Printf ( "[EASYTCP] Serving at: %s\n \n " , addr )
148+ _ , _ = fmt .Fprintf ( w , "[EASYTCP] Serving at: %s\n \n " , addr )
130149}
131150
132151func (r * Router ) setNotFoundHandler (handler HandlerFunc ) {
0 commit comments