Skip to content

Commit c7f44ac

Browse files
feat: sort message-route table with message id (#35)
1 parent 282a4ab commit c7f44ac

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

router.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ package easytcp
33
import (
44
"fmt"
55
"github.com/olekukonko/tablewriter"
6+
"github.com/spf13/cast"
7+
"io"
68
"os"
79
"reflect"
810
"runtime"
11+
"sort"
912
)
1013

1114
func newRouter() *Router {
@@ -117,16 +120,32 @@ func (r *Router) registerMiddleware(m ...MiddlewareFunc) {
117120

118121
// printHandlers prints registered route handlers to console.
119122
func (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

132151
func (r *Router) setNotFoundHandler(handler HandlerFunc) {

router_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,9 @@ func TestRouter_printHandlers(t *testing.T) {
174174
t.Run("when there are routes registered", func(t *testing.T) {
175175
rt := newRouter()
176176
rt.register(1234, nilHandler)
177+
rt.register(12345678, nilHandler)
177178
rt.register(12345, nilHandler)
178179
rt.register(123456, nilHandler)
179-
rt.register(12345678, nilHandler)
180180
rt.printHandlers("localhost")
181181
})
182182
}

0 commit comments

Comments
 (0)