OSDN Git Service

new repo
[bytom/vapor.git] / vendor / google.golang.org / grpc / peer / peer.go
1 /*
2  *
3  * Copyright 2014 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18
19 // Package peer defines various peer information associated with RPCs and
20 // corresponding utils.
21 package peer
22
23 import (
24         "net"
25
26         "golang.org/x/net/context"
27         "google.golang.org/grpc/credentials"
28 )
29
30 // Peer contains the information of the peer for an RPC, such as the address
31 // and authentication information.
32 type Peer struct {
33         // Addr is the peer address.
34         Addr net.Addr
35         // AuthInfo is the authentication information of the transport.
36         // It is nil if there is no transport security being used.
37         AuthInfo credentials.AuthInfo
38 }
39
40 type peerKey struct{}
41
42 // NewContext creates a new context with peer information attached.
43 func NewContext(ctx context.Context, p *Peer) context.Context {
44         return context.WithValue(ctx, peerKey{}, p)
45 }
46
47 // FromContext returns the peer information in ctx if it exists.
48 func FromContext(ctx context.Context) (p *Peer, ok bool) {
49         p, ok = ctx.Value(peerKey{}).(*Peer)
50         return
51 }