/* * * Copyright 2014 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */
// Package peer defines various peer information associated with RPCs and// corresponding utils.
package peerimport ()// Peer contains the information of the peer for an RPC, such as the address// and authentication information.typePeerstruct {// Addr is the peer address. Addr net.Addr// LocalAddr is the local address. LocalAddr net.Addr// AuthInfo is the authentication information of the transport. // It is nil if there is no transport security being used. AuthInfo credentials.AuthInfo}// String ensures the Peer types implements the Stringer interface in order to// allow to print a context with a peerKey value effectively.func ( *Peer) () string {if == nil {return"Peer<nil>" } := &strings.Builder{} .WriteString("Peer{")if .Addr != nil {fmt.Fprintf(, "Addr: '%s', ", .Addr.String()) } else {fmt.Fprintf(, "Addr: <nil>, ") }if .LocalAddr != nil {fmt.Fprintf(, "LocalAddr: '%s', ", .LocalAddr.String()) } else {fmt.Fprintf(, "LocalAddr: <nil>, ") }if .AuthInfo != nil {fmt.Fprintf(, "AuthInfo: '%s'", .AuthInfo.AuthType()) } else {fmt.Fprintf(, "AuthInfo: <nil>") } .WriteString("}")return .String()}type peerKey struct{}// NewContext creates a new context with peer information attached.func ( context.Context, *Peer) context.Context {returncontext.WithValue(, peerKey{}, )}// FromContext returns the peer information in ctx if it exists.func ( context.Context) ( *Peer, bool) { , = .Value(peerKey{}).(*Peer)return}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.