andrade-soulseek-downloader
Version:
Simple, safe Soulseek download library with built-in rate limiting to prevent bans
45 lines • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Peer = void 0;
const events_1 = require("events");
const message_factory_1 = require("../message-factory");
const debug = (msg) => {
if (process.env.DEBUG?.includes('slsk:peer')) {
console.log(`[slsk:peer] ${msg}`);
}
};
class Peer extends events_1.EventEmitter {
conn;
peer;
constructor(socket, peer) {
super();
this.conn = socket;
this.peer = peer;
this.conn.on('error', error => {
debug(`${peer.user} error ${error.code}`);
this.emit('disconnect', {});
});
this.conn.on('end', () => {
debug(`${peer.user} connection ended`);
this.emit('disconnect', {});
});
}
transferRequest(file, token) {
debug(`Transfer request ${file}`);
this.conn.write(message_factory_1.MessageFactory.to.peer.transferRequest(file, token).getBuff());
}
setAddress(host, port) {
debug(`setAddress for ${this.peer.user}: ${host} ${port}`);
this.peer.host = host;
this.peer.port = port;
}
fileSearchResult(files, token, user) {
debug(`send FileSearchResult to user ${this.peer.user} with token ${token}`);
this.conn.write(message_factory_1.MessageFactory.to.peer.fileSearchResult(files, token, user).getBuff());
}
destroy() {
this.conn.destroy();
}
}
exports.Peer = Peer;
//# sourceMappingURL=peer.js.map