mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
feat upgrade get_handler
This commit is contained in:
parent
28ac516f68
commit
b4f4528ef4
@ -16,6 +16,7 @@ import (
|
|||||||
func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error {
|
func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error {
|
||||||
var err error
|
var err error
|
||||||
var event *store.Event
|
var event *store.Event
|
||||||
|
events := make([]*store.Event, 0)
|
||||||
|
|
||||||
vars := mux.Vars(req)
|
vars := mux.Vars(req)
|
||||||
key := "/" + vars["key"]
|
key := "/" + vars["key"]
|
||||||
@ -54,10 +55,17 @@ func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error {
|
|||||||
cn, _ := w.(http.CloseNotifier)
|
cn, _ := w.(http.CloseNotifier)
|
||||||
closeChan := cn.CloseNotify()
|
closeChan := cn.CloseNotify()
|
||||||
|
|
||||||
select {
|
for {
|
||||||
case <-closeChan:
|
select {
|
||||||
return nil
|
case <-closeChan:
|
||||||
case event = <-eventChan:
|
return nil
|
||||||
|
case event = <-eventChan:
|
||||||
|
if event != nil && event.Action == store.Expire {
|
||||||
|
events = append(events, event)
|
||||||
|
} else {
|
||||||
|
goto finish
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { //get
|
} else { //get
|
||||||
@ -68,11 +76,19 @@ func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
finish:
|
||||||
|
|
||||||
w.Header().Add("X-Etcd-Index", fmt.Sprint(event.Index))
|
w.Header().Add("X-Etcd-Index", fmt.Sprint(event.Index))
|
||||||
w.Header().Add("X-Etcd-Term", fmt.Sprint(event.Term))
|
w.Header().Add("X-Etcd-Term", fmt.Sprint(event.Term))
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
b, _ := json.Marshal(event)
|
var b []byte
|
||||||
|
|
||||||
|
if len(events) == 0 {
|
||||||
|
b, _ = json.Marshal(event)
|
||||||
|
} else {
|
||||||
|
b, _ = json.Marshal(events)
|
||||||
|
}
|
||||||
w.Write(b)
|
w.Write(b)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user