FromContext/NewContext methods

This commit is contained in:
Asim 2016-01-28 18:23:24 +00:00
parent d306559d8f
commit 1cc621e2d6
3 changed files with 45 additions and 0 deletions

16
client/context.go Normal file
View File

@ -0,0 +1,16 @@
package client
import (
"golang.org/x/net/context"
)
type clientKey struct{}
func FromContext(ctx context.Context) (Client, bool) {
c, ok := ctx.Value(clientKey{}).(Client)
return c, ok
}
func NewContext(ctx context.Context, c Client) context.Context {
return context.WithValue(ctx, clientKey{}, c)
}

View File

@ -22,8 +22,12 @@ package micro
import ( import (
"github.com/micro/go-micro/client" "github.com/micro/go-micro/client"
"github.com/micro/go-micro/server" "github.com/micro/go-micro/server"
"golang.org/x/net/context"
) )
type serviceKey struct{}
// Service is an interface that wraps the lower level libraries // Service is an interface that wraps the lower level libraries
// within go-micro. Its a convenience method for building // within go-micro. Its a convenience method for building
// and initialising services. // and initialising services.
@ -45,3 +49,12 @@ var (
func NewService(opts ...Option) Service { func NewService(opts ...Option) Service {
return newService(opts...) return newService(opts...)
} }
func FromContext(ctx context.Context) (Service, bool) {
s, ok := ctx.Value(serviceKey{}).(Service)
return s, ok
}
func NewContext(ctx context.Context, s Service) context.Context {
return context.WithValue(ctx, serviceKey{}, s)
}

16
server/context.go Normal file
View File

@ -0,0 +1,16 @@
package server
import (
"golang.org/x/net/context"
)
type serverKey struct{}
func FromContext(ctx context.Context) (Server, bool) {
c, ok := ctx.Value(serverKey{}).(Server)
return c, ok
}
func NewContext(ctx context.Context, s Server) context.Context {
return context.WithValue(ctx, serverKey{}, s)
}