good morning!!!!

Skip to content
Snippets Groups Projects
server.go 1.86 KiB
Newer Older
a's avatar
wip
a committed
package jrpctest

import (
a's avatar
a committed
	"strings"

a's avatar
a committed
	jmux2 "gfx.cafe/open/jrpc/contrib/jmux"
a's avatar
a committed
	"gfx.cafe/open/jrpc/contrib/middleware"
a's avatar
a committed
	"gfx.cafe/open/jrpc/pkg/server"
a's avatar
wip
a committed
)

a's avatar
a committed
func NewServer() *server.Server {
	server := server.NewServer(NewRouter())
a's avatar
a committed
	return server
}
a's avatar
a committed
func NewRouter() *jmux2.Mux {
	mux := jmux2.NewRouter()
a's avatar
a committed
	mux.Use(middleware.LegacyUnderscoreReplacer)
a's avatar
a committed
	//mux.HandleFunc("testservice_subscribe", func(w jrpc.ResponseWriter, r *jrpc.Request) {
	//	sub, err := jrpc.UpgradeToSubscription(w, r)
	//	w.Send(sub, err)
	//	if err != nil {
	//		return
	//	}
	//	idx := 0
	//	for {
	//		err := w.Notify(idx)
	//		if err != nil {
	//			return
	//		}
	//		idx = idx + 1
	//	}
	//})
a's avatar
wip
a committed
	if err := mux.RegisterStruct("test", new(testService)); err != nil {
		panic(err)
	}
	if err := mux.RegisterStruct("nftest", new(notificationTestService)); err != nil {
		panic(err)
	}
a's avatar
a committed

	if err := mux.RegisterStruct("large", largeRespService{1024 * 1024 * 5 * 3}); err != nil {
		panic(err)
	}
	return mux
}
a's avatar
a committed
func NewRouterWithMaxSize(size int) *jmux2.Mux {
	mux := jmux2.NewRouter()
a's avatar
a committed
	mux.Use(middleware.LegacyUnderscoreReplacer)
a's avatar
a committed
	//mux.HandleFunc("testservice_subscribe", func(w jrpc.ResponseWriter, r *jrpc.Request) {
	//	sub, err := jrpc.UpgradeToSubscription(w, r)
	//	w.Send(sub, err)
	//	if err != nil {
	//		return
	//	}
	//	idx := 0
	//	for {
	//		err := w.Notify(idx)
	//		if err != nil {
	//			return
	//		}
	//		idx = idx + 1
	//	}
	//})
	if err := mux.RegisterStruct("test", new(testService)); err != nil {
		panic(err)
	}
	if err := mux.RegisterStruct("nftest", new(notificationTestService)); err != nil {
		panic(err)
	}

	if err := mux.RegisterStruct("large", largeRespService{size}); err != nil {
		panic(err)
	}
	return mux
}

// largeRespService generates arbitrary-size JSON responses.
type largeRespService struct {
	length int
}

func (x largeRespService) LargeResp() string {
	return strings.Repeat("x", x.length)
a's avatar
wip
a committed
}