Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 1x 1x 1x 1x 975x 2x 973x 973x 973x 973x 973x 973x 973x 973x 973x 61x 61x 1x 1x 1408x 1408x 1408x 1408x 1x 1408x 1408x 1347x 1347x 1408x 719x 1408x 1x 1347x 1347x 1347x 1347x 1347x 14x 14x 14x 8x 14x 1x 1237x 1237x 1x | 'use strict' /* * Copyright (c) 2013-2021 node-coap contributors. * * node-coap is licensed under an MIT +no-false-attribs license. * All rights not explicitly granted in the MIT license are reserved. * See the included LICENSE file for more details. */ var parameters = require('./parameters') , util = require('util') , EventEmitter = require('events').EventEmitter , parse = require('coap-packet').parse function RetrySend(sock, port, host, maxRetransmit) { if (!(this instanceof RetrySend)) { return new RetrySend(sock, port, host, maxRetransmit) } var that = this this._sock = sock this._port = port || parameters.coapPort this._host = host this._maxRetransmit = maxRetransmit || parameters.maxRetransmit this._sendAttemp = 0 this._lastMessageId = -1 this._currentTime = parameters.ackTimeout * (1 + (parameters.ackRandomFactor - 1) * Math.random()) * 1000 this._bOff = function() { that._currentTime = that._currentTime * 2 that._send() } } util.inherits(RetrySend, EventEmitter) RetrySend.prototype._send = function(avoidBackoff) { var that = this this._sock.send(this._message, 0, this._message.length, this._port, this._host, function(err, bytes) { that.emit('sent', err, bytes) if (err) { that.emit('error', err) } }) var messageId = parse(this._message).messageId if (messageId != this._lastMessageId) { this._lastMessageId = messageId this._sendAttemp = 0 } if (!avoidBackoff && ++this._sendAttemp <= this._maxRetransmit) this._bOffTimer = setTimeout(this._bOff, this._currentTime) this.emit('sending', this._message) } RetrySend.prototype.send = function(message, avoidBackoff) { var that = this , timeout this._message = message this._send(avoidBackoff) timeout = avoidBackoff ? parameters.maxRTT : parameters.exchangeLifetime this._timer = setTimeout(function() { var err = new Error('No reply in ' + timeout + 's') err.retransmitTimeout = timeout if (!avoidBackoff) that.emit('error', err) that.emit('timeout', err) }, timeout * 1000) } RetrySend.prototype.reset = function() { clearTimeout(this._timer) clearTimeout(this._bOffTimer) } module.exports = RetrySend |