From 428eb70b59b6957da71076d6a085203d2916572a Mon Sep 17 00:00:00 2001 From: liamcottle Date: Sat, 15 Feb 2025 21:53:17 +1300 Subject: [PATCH] listen for ok and err response when sending advert --- src/connection/connection.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/connection/connection.js b/src/connection/connection.js index fb923d8..3fef462 100644 --- a/src/connection/connection.js +++ b/src/connection/connection.js @@ -361,12 +361,43 @@ class Connection extends EventEmitter { }); } + async sendAdvert(type) { + return new Promise(async (resolve, reject) => { + try { + + // resolve promise when we receive ok + const onOk = () => { + this.off(Constants.ResponseCodes.Ok, onOk); + this.off(Constants.ResponseCodes.Err, onErr); + resolve(); + } + + // reject promise when we receive err + const onErr = () => { + this.off(Constants.ResponseCodes.Ok, onOk); + this.off(Constants.ResponseCodes.Err, onErr); + reject(); + } + + // listen for events + this.once(Constants.ResponseCodes.Ok, onOk); + this.once(Constants.ResponseCodes.Err, onErr); + + // send advert + await this.sendCommandSendSelfAdvert(type); + + } catch(e) { + reject(e); + } + }); + } + async sendFloodAdvert() { - await this.sendCommandSendSelfAdvert(Constants.SelfAdvertTypes.Flood); + return await this.sendAdvert(Constants.SelfAdvertTypes.Flood); } async sendZeroHopAdvert() { - await this.sendCommandSendSelfAdvert(Constants.SelfAdvertTypes.ZeroHop); + return await this.sendAdvert(Constants.SelfAdvertTypes.ZeroHop); } setAdvertName(name) {