You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.7 KiB
155 lines
3.7 KiB
4 years ago
|
'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
|
||
|
};
|