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.
45 lines
1.1 KiB
45 lines
1.1 KiB
'use strict';
|
|
const parseServerType = require('../core/sdam/server_description').parseServerType;
|
|
|
|
const RESPONSE_FIELDS = [
|
|
'minWireVersion',
|
|
'maxWireVersion',
|
|
'maxBsonObjectSize',
|
|
'maxMessageSizeBytes',
|
|
'maxWriteBatchSize',
|
|
'__nodejs_mock_server__'
|
|
];
|
|
|
|
class StreamDescription {
|
|
constructor(address, options) {
|
|
this.address = address;
|
|
this.type = parseServerType(null);
|
|
this.minWireVersion = undefined;
|
|
this.maxWireVersion = undefined;
|
|
this.maxBsonObjectSize = 16777216;
|
|
this.maxMessageSizeBytes = 48000000;
|
|
this.maxWriteBatchSize = 100000;
|
|
this.compressors =
|
|
options && options.compression && Array.isArray(options.compression.compressors)
|
|
? options.compression.compressors
|
|
: [];
|
|
}
|
|
|
|
receiveResponse(response) {
|
|
this.type = parseServerType(response);
|
|
|
|
RESPONSE_FIELDS.forEach(field => {
|
|
if (typeof response[field] !== 'undefined') {
|
|
this[field] = response[field];
|
|
}
|
|
});
|
|
|
|
if (response.compression) {
|
|
this.compressor = this.compressors.filter(c => response.compression.indexOf(c) !== -1)[0];
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
StreamDescription
|
|
};
|
|
|