good morning!!!!

Skip to content
Snippets Groups Projects
testing.go 534 B
Newer Older
a's avatar
ok
a committed
package rdwr

import (
	"context"
	"io"

	"gfx.cafe/open/jrpc/pkg/jrpctest"
a's avatar
a committed
	"gfx.cafe/open/jrpc/pkg/jsonrpc"
a's avatar
ok
a committed
	"gfx.cafe/open/jrpc/pkg/server"
)

a's avatar
a  
a committed
func ServerMaker() (jsonrpc.Handler, jrpctest.ClientMaker, func()) {
a's avatar
ok
a committed
	rd_s, wr_s := io.Pipe()
	rd_c, wr_c := io.Pipe()
a's avatar
a  
a committed
	s := jrpctest.NewRouter()
a's avatar
a committed
	clientCodec := NewCodec(rd_c, wr_s)
a's avatar
a  
a committed
	ctx, cn := context.WithCancel(context.Background())
a's avatar
ok
a committed
	go func() {
a's avatar
a  
a committed
		server.ServeCodec(ctx, clientCodec, s)
a's avatar
ok
a committed
	}()
a's avatar
a committed
	return s, func() jsonrpc.Conn {
a's avatar
a  
a committed
			return NewClient(rd_s, wr_c)
		}, func() {
			cn()
		}
a's avatar
ok
a committed
}