game_sync/mgrsrv/api/commonfunc.go

51 lines
1.0 KiB
Go

package api
import (
"fmt"
"net/http"
"time"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
)
var ApiDefaultTimeout = time.Second * 30
type HandlerWrapper func(*WebApiEvent, []byte) bool
type WebApiEvent struct {
req *http.Request
path string
rawQuery string
body []byte
h HandlerWrapper
res chan []byte
}
func (this *WebApiEvent) Done(o *basic.Object) error {
defer o.ProcessSeqnum()
this.h(this, this.body)
return nil
}
func (this *WebApiEvent) Response(data []byte) {
this.res <- data
}
func webApiResponse(rw http.ResponseWriter, data []byte) bool {
dataLen := len(data)
rw.Header().Set("Content-Length", fmt.Sprintf("%v", dataLen))
rw.WriteHeader(http.StatusOK)
pos := 0
for pos < dataLen {
writeLen, err := rw.Write(data[pos:])
if err != nil {
logger.Logger.Info("webApiResponse SendData error:", err, " data=", string(data[:]), " pos=", pos, " writelen=", writeLen, " dataLen=", dataLen)
return false
}
pos += writeLen
}
return true
}