|
- // Copyright (C) MongoDB, Inc. 2017-present.
- //
- // 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
-
- package event // import "go.mongodb.org/mongo-driver/event"
-
- import (
- "context"
-
- "go.mongodb.org/mongo-driver/bson"
- )
-
- // CommandStartedEvent represents an event generated when a command is sent to a server.
- type CommandStartedEvent struct {
- Command bson.Raw
- DatabaseName string
- CommandName string
- RequestID int64
- ConnectionID string
- }
-
- // CommandFinishedEvent represents a generic command finishing.
- type CommandFinishedEvent struct {
- DurationNanos int64
- CommandName string
- RequestID int64
- ConnectionID string
- }
-
- // CommandSucceededEvent represents an event generated when a command's execution succeeds.
- type CommandSucceededEvent struct {
- CommandFinishedEvent
- Reply bson.Raw
- }
-
- // CommandFailedEvent represents an event generated when a command's execution fails.
- type CommandFailedEvent struct {
- CommandFinishedEvent
- Failure string
- }
-
- // CommandMonitor represents a monitor that is triggered for different events.
- type CommandMonitor struct {
- Started func(context.Context, *CommandStartedEvent)
- Succeeded func(context.Context, *CommandSucceededEvent)
- Failed func(context.Context, *CommandFailedEvent)
- }
-
- // strings for pool command monitoring reasons
- const (
- ReasonIdle = "idle"
- ReasonPoolClosed = "poolClosed"
- ReasonStale = "stale"
- ReasonConnectionErrored = "connectionError"
- ReasonTimedOut = "timeout"
- )
-
- // strings for pool command monitoring types
- const (
- ConnectionClosed = "ConnectionClosed"
- PoolCreated = "ConnectionPoolCreated"
- ConnectionCreated = "ConnectionCreated"
- GetFailed = "ConnectionCheckOutFailed"
- GetSucceeded = "ConnectionCheckedOut"
- ConnectionReturned = "ConnectionCheckedIn"
- PoolCleared = "ConnectionPoolCleared"
- PoolClosedEvent = "ConnectionPoolClosed"
- )
-
- // MonitorPoolOptions contains pool options as formatted in pool events
- type MonitorPoolOptions struct {
- MaxPoolSize uint64 `json:"maxPoolSize"`
- MinPoolSize uint64 `json:"minPoolSize"`
- WaitQueueTimeoutMS uint64 `json:"maxIdleTimeMS"`
- }
-
- // PoolEvent contains all information summarizing a pool event
- type PoolEvent struct {
- Type string `json:"type"`
- Address string `json:"address"`
- ConnectionID uint64 `json:"connectionId"`
- PoolOptions *MonitorPoolOptions `json:"options"`
- Reason string `json:"reason"`
- }
-
- // PoolMonitor is a function that allows the user to gain access to events occurring in the pool
- type PoolMonitor struct {
- Event func(*PoolEvent)
- }
|