|
|
|
@ -125,7 +125,7 @@ func (s *Server) RegisterName(name string, rcvr interface{}) error { |
|
|
|
|
// If singleShot is true it will process a single request, otherwise it will handle
|
|
|
|
|
// requests until the codec returns an error when reading a request (in most cases
|
|
|
|
|
// an EOF). It executes requests in parallel when singleShot is false.
|
|
|
|
|
func (s *Server) serveRequest(codec ServerCodec, singleShot bool, options CodecOption, ctx context.Context) error { |
|
|
|
|
func (s *Server) serveRequest(ctx context.Context, codec ServerCodec, singleShot bool, options CodecOption) error { |
|
|
|
|
var pend sync.WaitGroup |
|
|
|
|
|
|
|
|
|
defer func() { |
|
|
|
@ -216,14 +216,14 @@ func (s *Server) serveRequest(codec ServerCodec, singleShot bool, options CodecO |
|
|
|
|
// stopped. In either case the codec is closed.
|
|
|
|
|
func (s *Server) ServeCodec(codec ServerCodec, options CodecOption) { |
|
|
|
|
defer codec.Close() |
|
|
|
|
s.serveRequest(codec, false, options, context.Background()) |
|
|
|
|
s.serveRequest(context.Background(), codec, false, options) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ServeSingleRequest reads and processes a single RPC request from the given codec. It will not
|
|
|
|
|
// close the codec unless a non-recoverable error has occurred. Note, this method will return after
|
|
|
|
|
// a single request has been processed!
|
|
|
|
|
func (s *Server) ServeSingleRequest(codec ServerCodec, options CodecOption, ctx context.Context) { |
|
|
|
|
s.serveRequest(codec, true, options, ctx) |
|
|
|
|
func (s *Server) ServeSingleRequest(ctx context.Context, codec ServerCodec, options CodecOption) { |
|
|
|
|
s.serveRequest(ctx, codec, true, options) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Stop will stop reading new requests, wait for stopPendingRequestTimeout to allow pending requests to finish,
|
|
|
|
|