package trace
import "github.com/ydb-platform/ydb-go-sdk/v3/trace"
Index ¶
- func ClearContext(x interface{}) interface{}
- func DiscoveryOnDiscover(t Discovery, c *context.Context, address string, database string) func(location string, endpoints []EndpointInfo, _ error)
- func DiscoveryOnWhoAmI(t Discovery, c *context.Context) func(user string, groups []string, _ error)
- func DriverOnClose(t Driver, c *context.Context) func(error)
- func DriverOnClusterClose(t Driver, c *context.Context) func(error)
- func DriverOnClusterGet(t Driver, c *context.Context) func(endpoint EndpointInfo, _ error)
- func DriverOnClusterInit(t Driver, c *context.Context) func(error)
- func DriverOnClusterInsert(t Driver, c *context.Context, endpoint EndpointInfo) func(inserted bool, state ConnState)
- func DriverOnClusterRemove(t Driver, c *context.Context, endpoint EndpointInfo) func(state ConnState, removed bool)
- func DriverOnClusterUpdate(t Driver, c *context.Context, endpoint EndpointInfo) func(state ConnState)
- func DriverOnConnClose(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
- func DriverOnConnInvoke(t Driver, c *context.Context, endpoint EndpointInfo, m Method) func(_ error, issues []Issue, opID string, state ConnState)
- func DriverOnConnNewStream(t Driver, c *context.Context, endpoint EndpointInfo, m Method) func(error) func(state ConnState, _ error)
- func DriverOnConnPark(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
- func DriverOnConnRelease(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
- func DriverOnConnStateChange(t Driver, endpoint EndpointInfo, state ConnState) func(state ConnState)
- func DriverOnConnStreamUsagesChange(t Driver, endpoint EndpointInfo, usages int)
- func DriverOnConnTake(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
- func DriverOnConnUsagesChange(t Driver, endpoint EndpointInfo, usages int)
- func DriverOnGetCredentials(t Driver, c *context.Context) func(token string, _ error)
- func DriverOnInit(t Driver, c *context.Context, endpoint string, database string, secure bool) func(error)
- func DriverOnNetClose(t Driver, address string) func(error)
- func DriverOnNetDial(t Driver, c *context.Context, address string) func(error)
- func DriverOnNetRead(t Driver, address string, buffer int) func(received int, _ error)
- func DriverOnNetWrite(t Driver, address string, bytes int) func(sent int, _ error)
- func DriverOnPessimizeNode(t Driver, c *context.Context, endpoint EndpointInfo, state ConnState, cause error) func(state ConnState)
- func DriverOnRepeaterWakeUp(t Driver, c *context.Context, name string, event string) func(error)
- func DriverOnResolve(t Driver, target string, resolved []string) func(error)
- func RetryOnRetry(t Retry, c context.Context, iD string, idempotent bool) func(error) func(attempts int, _ error)
- func ScriptingOnClose(t Scripting, c *context.Context) func(error)
- func ScriptingOnExecute(t Scripting, c *context.Context, query string, parameters scriptingQueryParameters) func(result scriptingResult, _ error)
- func ScriptingOnExplain(t Scripting, c *context.Context, query string) func(plan string, _ error)
- func ScriptingOnStreamExecute(t Scripting, c *context.Context, query string, parameters scriptingQueryParameters) func(error) func(error)
- func Stub(x interface{}, f func(name string, args ...interface{}))
- func TableOnClose(t Table, c *context.Context) func(error)
- func TableOnCreateSession(t Table, c *context.Context) func(error) func(session tableSessionInfo, attempts int, _ error)
- func TableOnDo(t Table, c *context.Context, idempotent bool) func(error) func(attempts int, _ error)
- func TableOnDoTx(t Table, c *context.Context, idempotent bool) func(error) func(attempts int, _ error)
- func TableOnInit(t Table, c *context.Context) func(limit int, keepAliveMinSize int)
- func TableOnPoolGet(t Table, c *context.Context) func(session tableSessionInfo, attempts int, _ error)
- func TableOnPoolPut(t Table, c *context.Context, session tableSessionInfo) func(error)
- func TableOnPoolSessionClose(t Table, c *context.Context, session tableSessionInfo) func()
- func TableOnPoolSessionNew(t Table, c *context.Context) func(session tableSessionInfo, _ error)
- func TableOnPoolStateChange(t Table, size int, event string)
- func TableOnPoolWait(t Table, c *context.Context) func(session tableSessionInfo, _ error)
- func TableOnSessionDelete(t Table, c *context.Context, session tableSessionInfo) func(error)
- func TableOnSessionKeepAlive(t Table, c *context.Context, session tableSessionInfo) func(error)
- func TableOnSessionNew(t Table, c *context.Context) func(session tableSessionInfo, _ error)
- func TableOnSessionQueryExecute(t Table, c *context.Context, session tableSessionInfo, query tableDataQuery, parameters tableQueryParameters) func(tx tableTransactionInfo, prepared bool, result tableResult, _ error)
- func TableOnSessionQueryExplain(t Table, c *context.Context, session tableSessionInfo, query string) func(aST string, plan string, _ error)
- func TableOnSessionQueryPrepare(t Table, c *context.Context, session tableSessionInfo, query string) func(result tableDataQuery, _ error)
- func TableOnSessionQueryStreamExecute(t Table, c *context.Context, session tableSessionInfo, query tableDataQuery, parameters tableQueryParameters) func(error) func(error)
- func TableOnSessionQueryStreamRead(t Table, c *context.Context, session tableSessionInfo) func(error) func(error)
- func TableOnSessionTransactionBegin(t Table, c *context.Context, session tableSessionInfo) func(tx tableTransactionInfo, _ error)
- func TableOnSessionTransactionCommit(t Table, c *context.Context, session tableSessionInfo, tx tableTransactionInfo) func(error)
- func TableOnSessionTransactionRollback(t Table, c *context.Context, session tableSessionInfo, tx tableTransactionInfo) func(error)
- func WithDefaultDetails(defaultDetails Details) matchDetailsOption
- func WithDriver(ctx context.Context, t Driver) context.Context
- func WithPOSIXMatch() matchDetailsOption
- func WithRetry(ctx context.Context, t Retry) context.Context
- func WithTable(ctx context.Context, t Table) context.Context
- type ConnState
- type Coordination
- type Details
- type Discovery
- type DiscoveryDiscoverDoneInfo
- type DiscoveryDiscoverStartInfo
- type DiscoveryWhoAmIDoneInfo
- type DiscoveryWhoAmIStartInfo
- type Driver
- type DriverCloseDoneInfo
- type DriverCloseStartInfo
- type DriverClusterCloseDoneInfo
- type DriverClusterCloseStartInfo
- type DriverClusterGetDoneInfo
- type DriverClusterGetStartInfo
- type DriverClusterInitDoneInfo
- type DriverClusterInitStartInfo
- type DriverClusterInsertDoneInfo
- type DriverClusterInsertStartInfo
- type DriverClusterRemoveDoneInfo
- type DriverClusterRemoveStartInfo
- type DriverClusterUpdateDoneInfo
- type DriverClusterUpdateStartInfo
- type DriverConnCloseDoneInfo
- type DriverConnCloseStartInfo
- type DriverConnInvokeDoneInfo
- type DriverConnInvokeStartInfo
- type DriverConnNewStreamDoneInfo
- type DriverConnNewStreamRecvInfo
- type DriverConnNewStreamStartInfo
- type DriverConnParkDoneInfo
- type DriverConnParkStartInfo
- type DriverConnReleaseDoneInfo
- type DriverConnReleaseStartInfo
- type DriverConnStateChangeDoneInfo
- type DriverConnStateChangeStartInfo
- type DriverConnStreamUsagesChangeInfo
- type DriverConnTakeDoneInfo
- type DriverConnTakeStartInfo
- type DriverConnUsagesChangeInfo
- type DriverGetCredentialsDoneInfo
- type DriverGetCredentialsStartInfo
- type DriverInitDoneInfo
- type DriverInitStartInfo
- type DriverNetCloseDoneInfo
- type DriverNetCloseStartInfo
- type DriverNetDialDoneInfo
- type DriverNetDialStartInfo
- type DriverNetReadDoneInfo
- type DriverNetReadStartInfo
- type DriverNetWriteDoneInfo
- type DriverNetWriteStartInfo
- type DriverPessimizeNodeDoneInfo
- type DriverPessimizeNodeStartInfo
- type DriverRepeaterTickDoneInfo
- type DriverRepeaterTickStartInfo
- type DriverResolveDoneInfo
- type DriverResolveStartInfo
- type EndpointInfo
- type FieldStubber
- type Issue
- type Method
- func (m Method) Name() (s string)
- func (m Method) Service() (s string)
- func (m Method) Split() (service, method string)
- type Ratelimiter
- type Retry
- type RetryLoopDoneInfo
- type RetryLoopIntermediateInfo
- type RetryLoopStartInfo
- type Scheme
- type Scripting
- type ScriptingCloseDoneInfo
- type ScriptingCloseStartInfo
- type ScriptingExecuteDoneInfo
- type ScriptingExecuteStartInfo
- type ScriptingExplainDoneInfo
- type ScriptingExplainStartInfo
- type ScriptingStreamExecuteDoneInfo
- type ScriptingStreamExecuteIntermediateInfo
- type ScriptingStreamExecuteStartInfo
- type Table
- type TableCloseDoneInfo
- type TableCloseStartInfo
- type TableCreateSessionDoneInfo
- type TableCreateSessionIntermediateInfo
- type TableCreateSessionStartInfo
- type TableDoDoneInfo
- type TableDoIntermediateInfo
- type TableDoStartInfo
- type TableDoTxDoneInfo
- type TableDoTxIntermediateInfo
- type TableDoTxStartInfo
- type TableExecuteDataQueryDoneInfo
- type TableExecuteDataQueryStartInfo
- type TableExplainQueryDoneInfo
- type TableExplainQueryStartInfo
- type TableInitDoneInfo
- type TableInitStartInfo
- type TableKeepAliveDoneInfo
- type TableKeepAliveStartInfo
- type TablePooStateChangeInfo
- type TablePoolGetDoneInfo
- type TablePoolGetStartInfo
- type TablePoolPutDoneInfo
- type TablePoolPutStartInfo
- type TablePoolSessionCloseDoneInfo
- type TablePoolSessionCloseStartInfo
- type TablePoolSessionNewDoneInfo
- type TablePoolSessionNewStartInfo
- type TablePoolWaitDoneInfo
- type TablePoolWaitStartInfo
- type TablePrepareDataQueryDoneInfo
- type TablePrepareDataQueryStartInfo
- type TableSessionDeleteDoneInfo
- type TableSessionDeleteStartInfo
- type TableSessionNewDoneInfo
- type TableSessionNewStartInfo
- type TableSessionQueryStreamExecuteDoneInfo
- type TableSessionQueryStreamExecuteIntermediateInfo
- type TableSessionQueryStreamExecuteStartInfo
- type TableSessionQueryStreamReadDoneInfo
- type TableSessionQueryStreamReadIntermediateInfo
- type TableSessionQueryStreamReadStartInfo
- type TableSessionTransactionBeginDoneInfo
- type TableSessionTransactionBeginStartInfo
- type TableSessionTransactionCommitDoneInfo
- type TableSessionTransactionCommitStartInfo
- type TableSessionTransactionRollbackDoneInfo
- type TableSessionTransactionRollbackStartInfo
Functions ¶
func ClearContext ¶
func ClearContext(x interface{}) interface{}
func DiscoveryOnDiscover ¶
func DiscoveryOnDiscover(t Discovery, c *context.Context, address string, database string) func(location string, endpoints []EndpointInfo, _ error)
func DiscoveryOnWhoAmI ¶
func DriverOnClose ¶
func DriverOnClusterClose ¶
func DriverOnClusterGet ¶
func DriverOnClusterGet(t Driver, c *context.Context) func(endpoint EndpointInfo, _ error)
func DriverOnClusterInit ¶
func DriverOnClusterInsert ¶
func DriverOnClusterInsert(t Driver, c *context.Context, endpoint EndpointInfo) func(inserted bool, state ConnState)
func DriverOnClusterRemove ¶
func DriverOnClusterRemove(t Driver, c *context.Context, endpoint EndpointInfo) func(state ConnState, removed bool)
func DriverOnClusterUpdate ¶
func DriverOnClusterUpdate(t Driver, c *context.Context, endpoint EndpointInfo) func(state ConnState)
func DriverOnConnClose ¶
func DriverOnConnClose(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
func DriverOnConnInvoke ¶
func DriverOnConnInvoke(t Driver, c *context.Context, endpoint EndpointInfo, m Method) func(_ error, issues []Issue, opID string, state ConnState)
func DriverOnConnNewStream ¶
func DriverOnConnNewStream(t Driver, c *context.Context, endpoint EndpointInfo, m Method) func(error) func(state ConnState, _ error)
func DriverOnConnPark ¶
func DriverOnConnPark(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
func DriverOnConnRelease ¶
func DriverOnConnRelease(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
func DriverOnConnStateChange ¶
func DriverOnConnStateChange(t Driver, endpoint EndpointInfo, state ConnState) func(state ConnState)
func DriverOnConnStreamUsagesChange ¶
func DriverOnConnStreamUsagesChange(t Driver, endpoint EndpointInfo, usages int)
func DriverOnConnTake ¶
func DriverOnConnTake(t Driver, c *context.Context, endpoint EndpointInfo) func(error)
func DriverOnConnUsagesChange ¶
func DriverOnConnUsagesChange(t Driver, endpoint EndpointInfo, usages int)
func DriverOnGetCredentials ¶
func DriverOnInit ¶
func DriverOnInit(t Driver, c *context.Context, endpoint string, database string, secure bool) func(error)
func DriverOnNetClose ¶
func DriverOnNetDial ¶
func DriverOnNetRead ¶
func DriverOnNetWrite ¶
func DriverOnPessimizeNode ¶
func DriverOnPessimizeNode(t Driver, c *context.Context, endpoint EndpointInfo, state ConnState, cause error) func(state ConnState)
func DriverOnRepeaterWakeUp ¶
func DriverOnResolve ¶
func RetryOnRetry ¶
func RetryOnRetry(t Retry, c context.Context, iD string, idempotent bool) func(error) func(attempts int, _ error)
func ScriptingOnClose ¶
func ScriptingOnExecute ¶
func ScriptingOnExecute(t Scripting, c *context.Context, query string, parameters scriptingQueryParameters) func(result scriptingResult, _ error)
func ScriptingOnExplain ¶
func ScriptingOnStreamExecute ¶
func ScriptingOnStreamExecute(t Scripting, c *context.Context, query string, parameters scriptingQueryParameters) func(error) func(error)
func Stub ¶
func Stub(x interface{}, f func(name string, args ...interface{}))
Stub is a helper function that stubs all functional fields of x with given f.
func TableOnClose ¶
func TableOnCreateSession ¶
func TableOnCreateSession(t Table, c *context.Context) func(error) func(session tableSessionInfo, attempts int, _ error)
func TableOnDo ¶
func TableOnDo(t Table, c *context.Context, idempotent bool) func(error) func(attempts int, _ error)
func TableOnDoTx ¶
func TableOnDoTx(t Table, c *context.Context, idempotent bool) func(error) func(attempts int, _ error)
func TableOnInit ¶
func TableOnPoolGet ¶
func TableOnPoolGet(t Table, c *context.Context) func(session tableSessionInfo, attempts int, _ error)
func TableOnPoolPut ¶
func TableOnPoolSessionClose ¶
func TableOnPoolSessionNew ¶
func TableOnPoolStateChange ¶
func TableOnPoolWait ¶
func TableOnSessionDelete ¶
func TableOnSessionKeepAlive ¶
func TableOnSessionNew ¶
func TableOnSessionQueryExecute ¶
func TableOnSessionQueryExecute(t Table, c *context.Context, session tableSessionInfo, query tableDataQuery, parameters tableQueryParameters) func(tx tableTransactionInfo, prepared bool, result tableResult, _ error)
func TableOnSessionQueryExplain ¶
func TableOnSessionQueryExplain(t Table, c *context.Context, session tableSessionInfo, query string) func(aST string, plan string, _ error)
func TableOnSessionQueryPrepare ¶
func TableOnSessionQueryPrepare(t Table, c *context.Context, session tableSessionInfo, query string) func(result tableDataQuery, _ error)
func TableOnSessionQueryStreamExecute ¶
func TableOnSessionQueryStreamExecute(t Table, c *context.Context, session tableSessionInfo, query tableDataQuery, parameters tableQueryParameters) func(error) func(error)
func TableOnSessionQueryStreamRead ¶
func TableOnSessionQueryStreamRead(t Table, c *context.Context, session tableSessionInfo) func(error) func(error)
func TableOnSessionTransactionBegin ¶
func TableOnSessionTransactionBegin(t Table, c *context.Context, session tableSessionInfo) func(tx tableTransactionInfo, _ error)
func TableOnSessionTransactionCommit ¶
func TableOnSessionTransactionCommit(t Table, c *context.Context, session tableSessionInfo, tx tableTransactionInfo) func(error)
func TableOnSessionTransactionRollback ¶
func TableOnSessionTransactionRollback(t Table, c *context.Context, session tableSessionInfo, tx tableTransactionInfo) func(error)
func WithDefaultDetails ¶
func WithDefaultDetails(defaultDetails Details) matchDetailsOption
func WithDriver ¶
WithDriver returns deadline which has associated Driver with it.
func WithPOSIXMatch ¶
func WithPOSIXMatch() matchDetailsOption
func WithRetry ¶
WithRetry returns deadline which has associated Retry with it.
func WithTable ¶
WithTable returns deadline which has associated Trace with it.
Types ¶
type ConnState ¶
type Coordination ¶
type Coordination struct{}
func (Coordination) Compose ¶
func (t Coordination) Compose(x Coordination) (ret Coordination)
Compose returns a new Coordination which has functional fields composed both from t and x.
type Details ¶
type Details uint64
const ( DriverNetEvents Details = 1 << iota // 1 DriverConnEvents // 2 DriverClusterEvents // 4 DriverResolverEvents // 8 DriverRepeaterEvents // 16 DriverCredentialsEvents // 32 TableSessionLifeCycleEvents // 64 TableSessionQueryInvokeEvents // 128 TableSessionQueryStreamEvents // 256 TableSessionTransactionEvents // 512 TablePoolLifeCycleEvents // 1024 TablePoolSessionLifeCycleEvents // 2048 TablePoolAPIEvents // 4096 RetryEvents // 8192 DiscoveryEvents // 16384 SchemeEvents // 32768 ScriptingEvents // 65536 RatelimiterEvents // 131072 CoordinationEvents // 262144 DriverEvents = DriverNetEvents | DriverConnEvents | DriverClusterEvents | DriverResolverEvents | DriverRepeaterEvents | DriverCredentialsEvents // 63 TableEvents = TableSessionLifeCycleEvents | TableSessionQueryInvokeEvents | TableSessionQueryStreamEvents | TableSessionTransactionEvents | TablePoolLifeCycleEvents | TablePoolSessionLifeCycleEvents | TablePoolAPIEvents // 16320 TablePoolEvents = TablePoolLifeCycleEvents | TablePoolSessionLifeCycleEvents | TablePoolAPIEvents // 15360 TableSessionQueryEvents = TableSessionQueryInvokeEvents | TableSessionQueryStreamEvents // 384 TableSessionEvents = TableSessionLifeCycleEvents | TableSessionQueryEvents | TableSessionTransactionEvents // 960 DetailsAll = ^Details(0) // 18446744073709551615 )
func MatchDetails ¶
type Discovery ¶
type Discovery struct { OnDiscover func(DiscoveryDiscoverStartInfo) func(DiscoveryDiscoverDoneInfo) OnWhoAmI func(DiscoveryWhoAmIStartInfo) func(DiscoveryWhoAmIDoneInfo) }
func (Discovery) Compose ¶
Compose returns a new Discovery which has functional fields composed both from t and x.
type DiscoveryDiscoverDoneInfo ¶
type DiscoveryDiscoverDoneInfo struct { Location string Endpoints []EndpointInfo Error error }
type DiscoveryDiscoverStartInfo ¶
type DiscoveryDiscoverStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Address string Database string }
type DiscoveryWhoAmIDoneInfo ¶
type DiscoveryWhoAmIStartInfo ¶
type DiscoveryWhoAmIStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type Driver ¶
type Driver struct { // Driver runtime events OnInit func(DriverInitStartInfo) func(DriverInitDoneInfo) OnClose func(DriverCloseStartInfo) func(DriverCloseDoneInfo) // Network events OnNetRead func(DriverNetReadStartInfo) func(DriverNetReadDoneInfo) OnNetWrite func(DriverNetWriteStartInfo) func(DriverNetWriteDoneInfo) OnNetDial func(DriverNetDialStartInfo) func(DriverNetDialDoneInfo) OnNetClose func(DriverNetCloseStartInfo) func(DriverNetCloseDoneInfo) // Resolver events OnResolve func(DriverResolveStartInfo) func(DriverResolveDoneInfo) // Conn events OnConnStateChange func(DriverConnStateChangeStartInfo) func(DriverConnStateChangeDoneInfo) OnConnInvoke func(DriverConnInvokeStartInfo) func(DriverConnInvokeDoneInfo) OnConnNewStream func( DriverConnNewStreamStartInfo, ) func( DriverConnNewStreamRecvInfo, ) func( DriverConnNewStreamDoneInfo, ) OnConnTake func(DriverConnTakeStartInfo) func(DriverConnTakeDoneInfo) OnConnUsagesChange func(DriverConnUsagesChangeInfo) OnConnStreamUsagesChange func(DriverConnStreamUsagesChangeInfo) OnConnPark func(DriverConnParkStartInfo) func(DriverConnParkDoneInfo) OnConnClose func(DriverConnCloseStartInfo) func(DriverConnCloseDoneInfo) OnConnRelease func(DriverConnReleaseStartInfo) func(DriverConnReleaseDoneInfo) // Cluster events OnClusterInit func(DriverClusterInitStartInfo) func(DriverClusterInitDoneInfo) OnClusterClose func(DriverClusterCloseStartInfo) func(DriverClusterCloseDoneInfo) OnClusterGet func(DriverClusterGetStartInfo) func(DriverClusterGetDoneInfo) OnClusterInsert func(DriverClusterInsertStartInfo) func(DriverClusterInsertDoneInfo) OnClusterUpdate func(DriverClusterUpdateStartInfo) func(DriverClusterUpdateDoneInfo) OnClusterRemove func(DriverClusterRemoveStartInfo) func(DriverClusterRemoveDoneInfo) OnPessimizeNode func(DriverPessimizeNodeStartInfo) func(DriverPessimizeNodeDoneInfo) // Repeater events OnRepeaterWakeUp func(DriverRepeaterTickStartInfo) func(DriverRepeaterTickDoneInfo) // Credentials events OnGetCredentials func(DriverGetCredentialsStartInfo) func(DriverGetCredentialsDoneInfo) }
func ContextDriver ¶
ContextDriver returns Driver associated with ctx. If there is no Driver associated with ctx then zero value of Driver is returned.
func (Driver) Compose ¶
Compose returns a new Driver which has functional fields composed both from t and x.
type DriverCloseDoneInfo ¶
type DriverCloseDoneInfo struct { Error error }
type DriverCloseStartInfo ¶
type DriverCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type DriverClusterCloseDoneInfo ¶
type DriverClusterCloseDoneInfo struct { Error error }
type DriverClusterCloseStartInfo ¶
type DriverClusterCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type DriverClusterGetDoneInfo ¶
type DriverClusterGetDoneInfo struct { Endpoint EndpointInfo Error error }
type DriverClusterGetStartInfo ¶
type DriverClusterGetStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type DriverClusterInitDoneInfo ¶
type DriverClusterInitDoneInfo struct { Error error }
type DriverClusterInitStartInfo ¶
type DriverClusterInitStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type DriverClusterInsertDoneInfo ¶
type DriverClusterInsertStartInfo ¶
type DriverClusterInsertStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverClusterRemoveDoneInfo ¶
type DriverClusterRemoveStartInfo ¶
type DriverClusterRemoveStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverClusterUpdateDoneInfo ¶
type DriverClusterUpdateDoneInfo struct { State ConnState }
type DriverClusterUpdateStartInfo ¶
type DriverClusterUpdateStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverConnCloseDoneInfo ¶
type DriverConnCloseDoneInfo struct { Error error }
type DriverConnCloseStartInfo ¶
type DriverConnCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverConnInvokeDoneInfo ¶
type DriverConnInvokeStartInfo ¶
type DriverConnInvokeStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo Method Method }
type DriverConnNewStreamDoneInfo ¶
type DriverConnNewStreamRecvInfo ¶
type DriverConnNewStreamRecvInfo struct { Error error }
type DriverConnNewStreamStartInfo ¶
type DriverConnNewStreamStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo Method Method }
type DriverConnParkDoneInfo ¶
type DriverConnParkDoneInfo struct { Error error }
type DriverConnParkStartInfo ¶
type DriverConnParkStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverConnReleaseDoneInfo ¶
type DriverConnReleaseDoneInfo struct { Error error }
type DriverConnReleaseStartInfo ¶
type DriverConnReleaseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverConnStateChangeDoneInfo ¶
type DriverConnStateChangeDoneInfo struct { State ConnState }
type DriverConnStateChangeStartInfo ¶
type DriverConnStateChangeStartInfo struct { Endpoint EndpointInfo State ConnState }
type DriverConnStreamUsagesChangeInfo ¶
type DriverConnStreamUsagesChangeInfo struct { Endpoint EndpointInfo Usages int }
type DriverConnTakeDoneInfo ¶
type DriverConnTakeDoneInfo struct { Error error }
type DriverConnTakeStartInfo ¶
type DriverConnTakeStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo }
type DriverConnUsagesChangeInfo ¶
type DriverConnUsagesChangeInfo struct { Endpoint EndpointInfo Usages int }
type DriverGetCredentialsDoneInfo ¶
type DriverGetCredentialsStartInfo ¶
type DriverGetCredentialsStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type DriverInitDoneInfo ¶
type DriverInitDoneInfo struct { Error error }
type DriverInitStartInfo ¶
type DriverInitStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint string Database string Secure bool }
type DriverNetCloseDoneInfo ¶
type DriverNetCloseDoneInfo struct { Error error }
type DriverNetCloseStartInfo ¶
type DriverNetCloseStartInfo struct { Address string }
type DriverNetDialDoneInfo ¶
type DriverNetDialDoneInfo struct { Error error }
type DriverNetDialStartInfo ¶
type DriverNetDialStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Address string }
type DriverNetReadDoneInfo ¶
type DriverNetReadStartInfo ¶
type DriverNetWriteDoneInfo ¶
type DriverNetWriteStartInfo ¶
type DriverPessimizeNodeDoneInfo ¶
type DriverPessimizeNodeDoneInfo struct { State ConnState }
type DriverPessimizeNodeStartInfo ¶
type DriverPessimizeNodeStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Endpoint EndpointInfo State ConnState Cause error }
type DriverRepeaterTickDoneInfo ¶
type DriverRepeaterTickDoneInfo struct { Error error }
type DriverRepeaterTickStartInfo ¶
type DriverRepeaterTickStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Name string Event string }
type DriverResolveDoneInfo ¶
type DriverResolveDoneInfo struct { Error error }
type DriverResolveStartInfo ¶
type EndpointInfo ¶
type EndpointInfo interface { fmt.Stringer NodeID() uint32 Address() string LocalDC() bool Location() string LastUpdated() time.Time }
type FieldStubber ¶
type FieldStubber struct { // OnStub is an optional callback that is called when field getting // stubbed. OnStub func(name string) // OnCall is an optional callback that will be called for each stubbed // field getting called. OnCall func(name string, args ...interface{}) }
FieldStubber contains options of filling all struct functional fields.
func (FieldStubber) Stub ¶
func (f FieldStubber) Stub(x reflect.Value)
Stub fills in given x struct.
type Issue ¶
Issue interface
type Method ¶
type Method string
Method represents rpc method.
func (Method) Name ¶
Name returns the rpc method name.
func (Method) Service ¶
Service returns the rpc service name.
func (Method) Split ¶
Split returns service name and method.
type Ratelimiter ¶
type Ratelimiter struct{}
func (Ratelimiter) Compose ¶
func (t Ratelimiter) Compose(x Ratelimiter) (ret Ratelimiter)
Compose returns a new Ratelimiter which has functional fields composed both from t and x.
type Retry ¶
type Retry struct { OnRetry func(RetryLoopStartInfo) func(RetryLoopIntermediateInfo) func(RetryLoopDoneInfo) }
func ContextRetry ¶
ContextRetry returns Retry associated with ctx. If there is no Retry associated with ctx then zero value of Retry is returned.
func (Retry) Compose ¶
Compose returns a new Retry which has functional fields composed both from t and x.
type RetryLoopDoneInfo ¶
type RetryLoopIntermediateInfo ¶
type RetryLoopIntermediateInfo struct { Error error }
type RetryLoopStartInfo ¶
type Scheme ¶
type Scheme struct{}
func (Scheme) Compose ¶
Compose returns a new Scheme which has functional fields composed both from t and x.
type Scripting ¶
type Scripting struct { OnExecute func(ScriptingExecuteStartInfo) func(ScriptingExecuteDoneInfo) OnStreamExecute func( ScriptingStreamExecuteStartInfo, ) func( ScriptingStreamExecuteIntermediateInfo, ) func( ScriptingStreamExecuteDoneInfo, ) OnExplain func(ScriptingExplainStartInfo) func(ScriptingExplainDoneInfo) OnClose func(ScriptingCloseStartInfo) func(ScriptingCloseDoneInfo) }
func (Scripting) Compose ¶
Compose returns a new Scripting which has functional fields composed both from t and x.
type ScriptingCloseDoneInfo ¶
type ScriptingCloseDoneInfo struct { Error error }
type ScriptingCloseStartInfo ¶
type ScriptingCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type ScriptingExecuteDoneInfo ¶
type ScriptingExecuteDoneInfo struct { Result scriptingResult Error error }
type ScriptingExecuteStartInfo ¶
type ScriptingExecuteStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Query string Parameters scriptingQueryParameters }
type ScriptingExplainDoneInfo ¶
type ScriptingExplainStartInfo ¶
type ScriptingExplainStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Query string }
type ScriptingStreamExecuteDoneInfo ¶
type ScriptingStreamExecuteDoneInfo struct { Error error }
type ScriptingStreamExecuteIntermediateInfo ¶
type ScriptingStreamExecuteIntermediateInfo struct { Error error }
type ScriptingStreamExecuteStartInfo ¶
type ScriptingStreamExecuteStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Query string Parameters scriptingQueryParameters }
type Table ¶
type Table struct { // Client events OnInit func(TableInitStartInfo) func(TableInitDoneInfo) OnClose func(TableCloseStartInfo) func(TableCloseDoneInfo) OnDo func(TableDoStartInfo) func(info TableDoIntermediateInfo) func(TableDoDoneInfo) OnDoTx func(TableDoTxStartInfo) func(info TableDoTxIntermediateInfo) func(TableDoTxDoneInfo) OnCreateSession func( TableCreateSessionStartInfo, ) func( info TableCreateSessionIntermediateInfo, ) func( TableCreateSessionDoneInfo, ) // Session events OnSessionNew func(TableSessionNewStartInfo) func(TableSessionNewDoneInfo) OnSessionDelete func(TableSessionDeleteStartInfo) func(TableSessionDeleteDoneInfo) OnSessionKeepAlive func(TableKeepAliveStartInfo) func(TableKeepAliveDoneInfo) // Query events OnSessionQueryPrepare func(TablePrepareDataQueryStartInfo) func(TablePrepareDataQueryDoneInfo) OnSessionQueryExecute func(TableExecuteDataQueryStartInfo) func(TableExecuteDataQueryDoneInfo) OnSessionQueryExplain func(TableExplainQueryStartInfo) func(TableExplainQueryDoneInfo) // Stream events OnSessionQueryStreamExecute func( TableSessionQueryStreamExecuteStartInfo, ) func( TableSessionQueryStreamExecuteIntermediateInfo, ) func( TableSessionQueryStreamExecuteDoneInfo, ) OnSessionQueryStreamRead func( TableSessionQueryStreamReadStartInfo, ) func( TableSessionQueryStreamReadIntermediateInfo, ) func( TableSessionQueryStreamReadDoneInfo, ) // Transaction events OnSessionTransactionBegin func(TableSessionTransactionBeginStartInfo) func(TableSessionTransactionBeginDoneInfo) OnSessionTransactionCommit func( TableSessionTransactionCommitStartInfo, ) func( TableSessionTransactionCommitDoneInfo, ) OnSessionTransactionRollback func( TableSessionTransactionRollbackStartInfo, ) func( TableSessionTransactionRollbackDoneInfo, ) // Pool state event OnPoolStateChange func(TablePooStateChangeInfo) // Pool session lifecycle events OnPoolSessionNew func(TablePoolSessionNewStartInfo) func(TablePoolSessionNewDoneInfo) OnPoolSessionClose func(TablePoolSessionCloseStartInfo) func(TablePoolSessionCloseDoneInfo) // Pool common API events OnPoolPut func(TablePoolPutStartInfo) func(TablePoolPutDoneInfo) OnPoolGet func(TablePoolGetStartInfo) func(TablePoolGetDoneInfo) OnPoolWait func(TablePoolWaitStartInfo) func(TablePoolWaitDoneInfo) }
Table contains options for tracing table client activity.
func ContextTable ¶
ContextTable returns Table associated with ctx. If there is no Table associated with ctx then zero value of Trace is returned.
func (Table) Compose ¶
Compose returns a new Table which has functional fields composed both from t and x.
type TableCloseDoneInfo ¶
type TableCloseDoneInfo struct { Error error }
type TableCloseStartInfo ¶
type TableCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TableCreateSessionDoneInfo ¶
type TableCreateSessionIntermediateInfo ¶
type TableCreateSessionIntermediateInfo struct { Error error }
type TableCreateSessionStartInfo ¶
type TableCreateSessionStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TableDoDoneInfo ¶
type TableDoIntermediateInfo ¶
type TableDoIntermediateInfo struct { Error error }
type TableDoStartInfo ¶
type TableDoStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Idempotent bool }
type TableDoTxDoneInfo ¶
type TableDoTxIntermediateInfo ¶
type TableDoTxIntermediateInfo struct { Error error }
type TableDoTxStartInfo ¶
type TableDoTxStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Idempotent bool }
type TableExecuteDataQueryDoneInfo ¶
type TableExecuteDataQueryDoneInfo struct { Tx tableTransactionInfo Prepared bool Result tableResult Error error }
type TableExecuteDataQueryStartInfo ¶
type TableExecuteDataQueryStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Query tableDataQuery Parameters tableQueryParameters }
type TableExplainQueryDoneInfo ¶
type TableExplainQueryStartInfo ¶
type TableExplainQueryStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Query string }
type TableInitDoneInfo ¶
type TableInitStartInfo ¶
type TableInitStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TableKeepAliveDoneInfo ¶
type TableKeepAliveDoneInfo struct { Error error }
type TableKeepAliveStartInfo ¶
type TableKeepAliveStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TablePooStateChangeInfo ¶
type TablePoolGetDoneInfo ¶
type TablePoolGetStartInfo ¶
type TablePoolGetStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TablePoolPutDoneInfo ¶
type TablePoolPutDoneInfo struct { Error error }
type TablePoolPutStartInfo ¶
type TablePoolPutStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TablePoolSessionCloseDoneInfo ¶
type TablePoolSessionCloseDoneInfo struct{}
type TablePoolSessionCloseStartInfo ¶
type TablePoolSessionCloseStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TablePoolSessionNewDoneInfo ¶
type TablePoolSessionNewDoneInfo struct { Session tableSessionInfo Error error }
type TablePoolSessionNewStartInfo ¶
type TablePoolSessionNewStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TablePoolWaitDoneInfo ¶
type TablePoolWaitDoneInfo struct { Session tableSessionInfo Error error }
TablePoolWaitDoneInfo means a wait iteration inside Get call is done Warning: Session and Error may be nil at the same time. This means that a wait iteration donned without any significant tableResultErr
type TablePoolWaitStartInfo ¶
type TablePoolWaitStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TablePrepareDataQueryDoneInfo ¶
type TablePrepareDataQueryDoneInfo struct { Result tableDataQuery Error error }
type TablePrepareDataQueryStartInfo ¶
type TablePrepareDataQueryStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Query string }
type TableSessionDeleteDoneInfo ¶
type TableSessionDeleteDoneInfo struct { Error error }
type TableSessionDeleteStartInfo ¶
type TableSessionDeleteStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TableSessionNewDoneInfo ¶
type TableSessionNewDoneInfo struct { Session tableSessionInfo Error error }
type TableSessionNewStartInfo ¶
type TableSessionNewStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context }
type TableSessionQueryStreamExecuteDoneInfo ¶
type TableSessionQueryStreamExecuteDoneInfo struct { Error error }
type TableSessionQueryStreamExecuteIntermediateInfo ¶
type TableSessionQueryStreamExecuteIntermediateInfo struct { Error error }
type TableSessionQueryStreamExecuteStartInfo ¶
type TableSessionQueryStreamExecuteStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Query tableDataQuery Parameters tableQueryParameters }
type TableSessionQueryStreamReadDoneInfo ¶
type TableSessionQueryStreamReadDoneInfo struct { Error error }
type TableSessionQueryStreamReadIntermediateInfo ¶
type TableSessionQueryStreamReadIntermediateInfo struct { Error error }
type TableSessionQueryStreamReadStartInfo ¶
type TableSessionQueryStreamReadStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TableSessionTransactionBeginDoneInfo ¶
type TableSessionTransactionBeginDoneInfo struct { Tx tableTransactionInfo Error error }
type TableSessionTransactionBeginStartInfo ¶
type TableSessionTransactionBeginStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo }
type TableSessionTransactionCommitDoneInfo ¶
type TableSessionTransactionCommitDoneInfo struct { Error error }
type TableSessionTransactionCommitStartInfo ¶
type TableSessionTransactionCommitStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Tx tableTransactionInfo }
type TableSessionTransactionRollbackDoneInfo ¶
type TableSessionTransactionRollbackDoneInfo struct { Error error }
type TableSessionTransactionRollbackStartInfo ¶
type TableSessionTransactionRollbackStartInfo struct { // Context make available context in trace callback function. // Pointer to context provide replacement of context in trace callback function. // Warning: concurrent access to pointer on client side must be excluded. // Safe replacement of context are provided only inside callback function Context *context.Context Session tableSessionInfo Tx tableTransactionInfo }
Source Files ¶
context.go coordination.go coordination_gtrace.go details.go discovery.go discovery_gtrace.go driver.go driver_gtrace.go ratelimiter.go ratelimiter_gtrace.go retry.go retry_gtrace.go scheme.go scheme_gtrace.go scripting.go scripting_gtrace.go table.go table_gtrace.go traceutil.go
- Version
- v3.16.8-rc0
- Published
- Mar 23, 2022
- Platform
- js/wasm
- Imports
- 6 packages
- Last checked
- 1 second ago –
Tools for package owners.