events.js
3.75 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
'use strict';
/**
* The base class for all monitoring events published from the connection pool
*
* @property {number} time A timestamp when the event was created
* @property {string} address The address (host/port pair) of the pool
*/
class ConnectionPoolMonitoringEvent {
constructor(pool) {
this.time = new Date();
this.address = pool.address;
}
}
/**
* An event published when a connection pool is created
*
* @property {Object} options The options used to create this connection pool
*/
class ConnectionPoolCreatedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool) {
super(pool);
this.options = pool.options;
}
}
/**
* An event published when a connection pool is closed
*/
class ConnectionPoolClosedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool) {
super(pool);
}
}
/**
* An event published when a connection pool creates a new connection
*
* @property {number} connectionId A monotonically increasing, per-pool id for the newly created connection
*/
class ConnectionCreatedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, connection) {
super(pool);
this.connectionId = connection.id;
}
}
/**
* An event published when a connection is ready for use
*
* @property {number} connectionId The id of the connection
*/
class ConnectionReadyEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, connection) {
super(pool);
this.connectionId = connection.id;
}
}
/**
* An event published when a connection is closed
*
* @property {number} connectionId The id of the connection
* @property {string} reason The reason the connection was closed
*/
class ConnectionClosedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, connection, reason) {
super(pool);
this.connectionId = connection.id;
this.reason = reason || 'unknown';
}
}
/**
* An event published when a request to check a connection out begins
*/
class ConnectionCheckOutStartedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool) {
super(pool);
}
}
/**
* An event published when a request to check a connection out fails
*
* @property {string} reason The reason the attempt to check out failed
*/
class ConnectionCheckOutFailedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, reason) {
super(pool);
this.reason = reason;
}
}
/**
* An event published when a connection is checked out of the connection pool
*
* @property {number} connectionId The id of the connection
*/
class ConnectionCheckedOutEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, connection) {
super(pool);
this.connectionId = connection.id;
}
}
/**
* An event published when a connection is checked into the connection pool
*
* @property {number} connectionId The id of the connection
*/
class ConnectionCheckedInEvent extends ConnectionPoolMonitoringEvent {
constructor(pool, connection) {
super(pool);
this.connectionId = connection.id;
}
}
/**
* An event published when a connection pool is cleared
*/
class ConnectionPoolClearedEvent extends ConnectionPoolMonitoringEvent {
constructor(pool) {
super(pool);
}
}
const CMAP_EVENT_NAMES = [
'connectionPoolCreated',
'connectionPoolClosed',
'connectionCreated',
'connectionReady',
'connectionClosed',
'connectionCheckOutStarted',
'connectionCheckOutFailed',
'connectionCheckedOut',
'connectionCheckedIn',
'connectionPoolCleared'
];
module.exports = {
CMAP_EVENT_NAMES,
ConnectionPoolCreatedEvent,
ConnectionPoolClosedEvent,
ConnectionCreatedEvent,
ConnectionReadyEvent,
ConnectionClosedEvent,
ConnectionCheckOutStartedEvent,
ConnectionCheckOutFailedEvent,
ConnectionCheckedOutEvent,
ConnectionCheckedInEvent,
ConnectionPoolClearedEvent
};