in packages/sdk/src/internal/protocols/protocol.ts [76:122]
public sendMessage(
message: Message,
promise?: ExportedPromise,
timeoutSeconds?: number,
serializedMessage?: Buffer
) {
message.id = message.id ?? newGuid();
// Run message through all the middlewares
const middlewares = this.middlewares.slice();
for (const middleware of middlewares) {
if (middleware.beforeSend) {
message = middleware.beforeSend(message, promise);
if (!message) {
if (promise && promise.reject) {
promise.reject();
}
return;
}
}
}
const setReplyTimeout = () => {
if (timeoutSeconds > 0) {
return setTimeout(() => {
const reason = `${this.name} timed out awaiting response for ${message.payload.type}, ` +
`id:${message.id}.`;
log.error('network', reason);
this.rejectPromiseForMessage(message.id, reason);
this.conn.close();
}, timeoutSeconds * 1000);
}
};
// Save the reply callback
if (promise) {
this.promises.set(message.id, {
promise,
timeout: setReplyTimeout()
});
}
log.verbose('network', `${this.name} send id:${message.id.substr(0, 8)}, type:${message.payload.type}`);
log.verbose('network-content', JSON.stringify(message, (key, value) => filterEmpty(value)));
this.conn.send(message, serializedMessage);
}