You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
/* |
|
* |
|
* 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) |
|
}
|
|
|