aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/google.golang.org/grpc/stats/handlers.go
blob: dc03731e45efa051eabb48ac4c1837a3e2a80e9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 *
 * Copyright 2016 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 stats

import (
    "context"
    "net"
)

// ConnTagInfo defines the relevant information needed by connection context tagger.
type ConnTagInfo struct {
    // RemoteAddr is the remote address of the corresponding connection.
    RemoteAddr net.Addr
    // LocalAddr is the local address of the corresponding connection.
    LocalAddr net.Addr
}

// RPCTagInfo defines the relevant information needed by RPC context tagger.
type RPCTagInfo struct {
    // FullMethodName is the RPC method in the format of /package.service/method.
    FullMethodName string
    // FailFast indicates if this RPC is failfast.
    // This field is only valid on client side, it's always false on server side.
    FailFast bool
}

// Handler defines the interface for the related stats handling (e.g., RPCs, connections).
type Handler interface {
    // TagRPC can attach some information to the given context.
    // The context used for the rest lifetime of the RPC will be derived from
    // the returned context.
    TagRPC(context.Context, *RPCTagInfo) context.Context
    // HandleRPC processes the RPC stats.
    HandleRPC(context.Context, RPCStats)

    // TagConn can attach some information to the given context.
    // The returned context will be used for stats handling.
    // For conn stats handling, the context used in HandleConn for this
    // connection will be derived from the context returned.
    // For RPC stats handling,
    //  - On server side, the context used in HandleRPC for all RPCs on this
    // connection will be derived from the context returned.
    //  - On client side, the context is not derived from the context returned.
    TagConn(context.Context, *ConnTagInfo) context.Context
    // HandleConn processes the Conn stats.
    HandleConn(context.Context, ConnStats)
}