diff --git a/lib/mux/web.go b/lib/mux/web.go
new file mode 100644
index 0000000..0ebe8e7
--- /dev/null
+++ b/lib/mux/web.go
@@ -0,0 +1,97 @@
+package mux
+
+import (
+ "fmt"
+ "net/http"
+ "sort"
+ "strconv"
+ "time"
+)
+
+type connLog struct {
+ startTime time.Time
+ isClose bool
+ logs []string
+}
+
+var m map[int]*connLog
+
+var copyMap map[int]*connLog
+
+func deepCopyMap() {
+ copyMap = make(map[int]*connLog)
+ for k, v := range m {
+ copyMap[k] = &connLog{
+ startTime: v.startTime,
+ isClose: v.isClose,
+ logs: v.logs,
+ }
+ }
+}
+
+//func init() {
+// m = make(map[int]*connLog)
+// m[0] = &connLog{
+// startTime: time.Now(),
+// isClose: false,
+// logs: []string{"111", "222", "333"},
+// }
+// m[1] = &connLog{
+// startTime: time.Now(),
+// isClose: false,
+// logs: []string{"111", "222", "333", "444"},
+// }
+// m[2] = &connLog{
+// startTime: time.Now(),
+// isClose: true,
+// logs: []string{"111", "222", "333", "555"},
+// }
+//}
+
+type IntSlice []int
+
+func (s IntSlice) Len() int { return len(s) }
+
+func (s IntSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+
+func (s IntSlice) Less(i, j int) bool { return s[i] < s[j] }
+
+func NewLogServer() {
+ http.HandleFunc("/", index)
+ http.HandleFunc("/detail", detail)
+ http.HandleFunc("/stash", stash)
+ fmt.Println(http.ListenAndServe(":8899", nil))
+}
+
+func stash(w http.ResponseWriter, r *http.Request) {
+ deepCopyMap()
+ w.Write([]byte("ok"))
+}
+
+func index(w http.ResponseWriter, r *http.Request) {
+ var keys []int
+ for k := range copyMap {
+ keys = append(keys, k)
+ }
+ sort.Sort(IntSlice(keys))
+ var s string
+ for v := range keys {
+ connL := copyMap[v]
+ s += "" + strconv.Itoa(v) + "----------"
+ s += strconv.Itoa(int(time.Now().Unix()-connL.startTime.Unix())) + "s----------"
+ s += strconv.FormatBool(connL.isClose)
+ s += "
"
+ }
+ w.Write([]byte(s))
+}
+
+func detail(w http.ResponseWriter, r *http.Request) {
+ id := r.FormValue("id")
+ i, _ := strconv.Atoi(id)
+ v, _ := copyMap[i]
+ var s string
+ for _, vv := range v.logs {
+ s += "
" + vv + "
" + } + w.Write([]byte(s)) +} diff --git a/lib/mux/web_test.go b/lib/mux/web_test.go new file mode 100644 index 0000000..91a0430 --- /dev/null +++ b/lib/mux/web_test.go @@ -0,0 +1,7 @@ +package mux + +import "testing" + +func TestWeb(t *testing.T) { + NewLogServer() +}