File: event.go

package info (click to toggle)
golang-mongodb-mongo-driver 1.8.4%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bookworm-backports
  • size: 18,520 kB
  • sloc: perl: 533; ansic: 491; python: 432; makefile: 187; sh: 72
file content (97 lines) | stat: -rw-r--r-- 3,599 bytes parent folder | download | duplicates (2)
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 ""
	}
}