return
}
+func NewSyncMap(conf *http.Server, m *sync.Map) (o *Web) {
+
+ o = new(Web)
+
+ o.mode = "syncmap"
+ o.Server = conf
+
+ if o.Server.Handler == nil {
+ o.mux = http.NewServeMux()
+ o.Server.Handler = o.mux
+ }
+
+ go o.Server.ListenAndServe()
+
+ o.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ if wr, ok := m.Load(r.URL.Path); ok {
+ if f, ok := wr.(func(http.ResponseWriter, *http.Request)); ok {
+ f(w, r)
+ }
+ }
+ })
+
+ return
+}
+
func (t *Web) Handle(path_func map[string]func(http.ResponseWriter, *http.Request)) {
if t.mode != "simple" {
panic("必须是New创建的")
import (
"net/http"
"strconv"
+ "sync"
"testing"
"time"
)
})
}
}
+
+func Test_ServerSyncMap(t *testing.T) {
+ var m sync.Map
+ m.Store("/", func(w http.ResponseWriter, r *http.Request) {
+ w.Write([]byte("1"))
+ })
+ NewSyncMap(&http.Server{
+ Addr: "127.0.0.1:9090",
+ }, &m)
+ for i := 0; i < 20; i++ {
+ time.Sleep(time.Second)
+ m.Store("/", func(w http.ResponseWriter, r *http.Request) {
+ w.Write([]byte(strconv.Itoa(i)))
+ })
+ }
+}