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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
// 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 unified
import (
"strings"
"go.mongodb.org/mongo-driver/event"
)
type monitoringEventType string
// monitoringEventTypes poolReadyEvent and connectionCheckOutStartedEvent are included
// to support logging in the atlas planned maintenance executor, which stores events
// without making assertions on them. The matching published event types will be
// created in GODRIVER-1827
const (
commandStartedEvent monitoringEventType = "CommandStartedEvent"
commandSucceededEvent monitoringEventType = "CommandSucceededEvent"
commandFailedEvent monitoringEventType = "CommandFailedEvent"
poolCreatedEvent monitoringEventType = "PoolCreatedEvent"
poolReadyEvent monitoringEventType = "PoolReadyEvent"
poolClearedEvent monitoringEventType = "PoolClearedEvent"
poolClosedEvent monitoringEventType = "PoolClosedEvent"
connectionCreatedEvent monitoringEventType = "ConnectionCreatedEvent"
connectionReadyEvent monitoringEventType = "ConnectionReadyEvent"
connectionClosedEvent monitoringEventType = "ConnectionClosedEvent"
connectionCheckOutStartedEvent monitoringEventType = "ConnectionCheckOutStartedEvent"
connectionCheckOutFailedEvent monitoringEventType = "ConnectionCheckOutFailedEvent"
connectionCheckedOutEvent monitoringEventType = "ConnectionCheckedOutEvent"
connectionCheckedInEvent monitoringEventType = "ConnectionCheckedInEvent"
)
func monitoringEventTypeFromString(eventStr string) (monitoringEventType, bool) {
switch strings.ToLower(eventStr) {
case "commandstartedevent":
return commandStartedEvent, true
case "commandsucceededevent":
return commandSucceededEvent, true
case "commandfailedevent":
return commandFailedEvent, true
case "poolcreatedevent":
return poolCreatedEvent, true
case "poolreadyevent":
return poolReadyEvent, true
case "poolclearedevent":
return poolClearedEvent, true
case "poolclosedevent":
return poolClosedEvent, true
case "connectioncreatedevent":
return connectionCreatedEvent, true
case "connectionreadyevent":
return connectionReadyEvent, true
case "connectionclosedevent":
return connectionClosedEvent, true
case "connectioncheckoutstartedevent":
return connectionCheckOutStartedEvent, true
case "connectioncheckoutfailedevent":
return connectionCheckOutFailedEvent, true
case "connectioncheckedoutevent":
return connectionCheckedOutEvent, true
case "connectioncheckedinevent":
return connectionCheckedInEvent, true
default:
return "", false
}
}
func monitoringEventTypeFromPoolEvent(evt *event.PoolEvent) monitoringEventType {
// TODO GODRIVER-1827: add storePoolReady and storeConnectionCheckOutStarted events
switch evt.Type {
case event.PoolCreated:
return poolCreatedEvent
case event.PoolCleared:
return poolClearedEvent
case event.PoolClosedEvent:
return poolClosedEvent
case event.ConnectionCreated:
return connectionCreatedEvent
case event.ConnectionReady:
return connectionReadyEvent
case event.ConnectionClosed:
return connectionClosedEvent
case event.GetFailed:
return connectionCheckOutFailedEvent
case event.GetSucceeded:
return connectionCheckedOutEvent
case event.ConnectionReturned:
return connectionCheckedInEvent
default:
return ""
}
}
|