Blame


1 e342de7d 2015-11-11 adrien package p9p
2 e342de7d 2015-11-11 adrien
3 e342de7d 2015-11-11 adrien import (
4 e342de7d 2015-11-11 adrien "golang.org/x/net/context"
5 e342de7d 2015-11-11 adrien )
6 e342de7d 2015-11-11 adrien
7 e342de7d 2015-11-11 adrien type contextKey string
8 e342de7d 2015-11-11 adrien
9 e342de7d 2015-11-11 adrien const (
10 e342de7d 2015-11-11 adrien versionKey contextKey = "9p.version"
11 e342de7d 2015-11-11 adrien )
12 e342de7d 2015-11-11 adrien
13 e342de7d 2015-11-11 adrien func withVersion(ctx context.Context, version string) context.Context {
14 e342de7d 2015-11-11 adrien return context.WithValue(ctx, versionKey, version)
15 e342de7d 2015-11-11 adrien }
16 e342de7d 2015-11-11 adrien
17 e342de7d 2015-11-11 adrien // GetVersion returns the protocol version from the context. If the version is
18 e342de7d 2015-11-11 adrien // not known, an empty string is returned. This is typically set on the
19 e342de7d 2015-11-11 adrien // context passed into function calls in a server implementation.
20 e342de7d 2015-11-11 adrien func GetVersion(ctx context.Context) string {
21 e342de7d 2015-11-11 adrien v, ok := ctx.Value(versionKey).(string)
22 e342de7d 2015-11-11 adrien if !ok {
23 e342de7d 2015-11-11 adrien return ""
24 e342de7d 2015-11-11 adrien }
25 e342de7d 2015-11-11 adrien return v
26 e342de7d 2015-11-11 adrien }