github.com/polarismesh/polaris@v1.17.8/common/utils/context.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package utils 19 20 import "context" 21 22 // StringContext is a context key that carries a string. 23 type StringContext string 24 25 // localhostCtx is a context key that carries localhost info. 26 type localhostCtx struct{} 27 28 // WithLocalhost 存储localhost 29 func WithLocalhost(ctx context.Context, localhost string) context.Context { 30 return context.WithValue(ctx, localhostCtx{}, localhost) 31 } 32 33 // ValueLocalhost 获取localhost 34 func ValueLocalhost(ctx context.Context) string { 35 if ctx == nil { 36 return "" 37 } 38 39 value, ok := ctx.Value(localhostCtx{}).(string) 40 if !ok { 41 return "" 42 } 43 44 return value 45 }