func StartGdbTestServer()

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
}