in gdbclient/internal/pool/gdb_test_server.go [36:80]
func StartGdbTestServer() *testGdbEchoServer {
server := &testGdbEchoServer{
wsUpgrader: websocket.Upgrader{},
}
// make default response
server.WsMakeResponseFunc = func(requestId string) []byte {
response := respPrefix + requestId + respSuffix
return []byte(response)
}
server.wsEchoFun = func(writer http.ResponseWriter, request *http.Request) {
c, err := server.wsUpgrader.Upgrade(writer, request, nil)
if err != nil {
return
}
defer c.Close()
for {
mt, message, err := c.ReadMessage()
if err != nil {
break
}
msg := string(message)
var response []byte
idIdx := strings.Index(msg, requestIdMatchStr)
if idIdx > 0 {
idEndIdx := strings.Index(msg, requestIdEndMatchStr)
requestId := msg[idIdx+len(requestIdMatchStr) : idEndIdx]
response = server.WsMakeResponseFunc(requestId)
} else {
response = []byte(msg)
}
err = c.WriteMessage(mt, response)
if err != nil {
break
}
}
}
server.wsServer = httptest.NewServer(server.wsEchoFun)
server.WsUrl = "ws" + strings.TrimPrefix(server.wsServer.URL, "http")
return server
}