123456789101112131415161718192021222324252627282930 |
- // Copyright 2016 Michal Witkowski. All Rights Reserved.
- // See LICENSE for licensing terms.
- package grpc_middleware
- import (
- "golang.org/x/net/context"
- "google.golang.org/grpc"
- )
- // WrappedServerStream is a thin wrapper around grpc.ServerStream that allows modifying context.
- type WrappedServerStream struct {
- grpc.ServerStream
- // WrappedContext is the wrapper's own Context. You can assign it.
- WrappedContext context.Context
- }
- // Context returns the wrapper's WrappedContext, overwriting the nested grpc.ServerStream.Context()
- func (w *WrappedServerStream) Context() context.Context {
- return w.WrappedContext
- }
- // WrapServerStream returns a ServerStream that has the ability to overwrite context.
- func WrapServerStream(stream grpc.ServerStream) *WrappedServerStream {
- if existing, ok := stream.(*WrappedServerStream); ok {
- return existing
- }
- return &WrappedServerStream{ServerStream: stream, WrappedContext: stream.Context()}
- }
|