| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 'use strict'
- const NumberAllocator = require('number-allocator').NumberAllocator
- /**
- * UniqueMessageAllocator constructor
- * @constructor
- */
- function UniqueMessageIdProvider () {
- if (!(this instanceof UniqueMessageIdProvider)) {
- return new UniqueMessageIdProvider()
- }
- this.numberAllocator = new NumberAllocator(1, 65535)
- }
- /**
- * allocate
- *
- * Get the next messageId.
- * @return if messageId is fully allocated then return null,
- * otherwise return the smallest usable unsigned int messageId.
- */
- UniqueMessageIdProvider.prototype.allocate = function () {
- this.lastId = this.numberAllocator.alloc()
- return this.lastId
- }
- /**
- * getLastAllocated
- * Get the last allocated messageId.
- * @return unsigned int
- */
- UniqueMessageIdProvider.prototype.getLastAllocated = function () {
- return this.lastId
- }
- /**
- * register
- * Register messageId. If success return true, otherwise return false.
- * @param { unsigned int } - messageId to register,
- * @return boolean
- */
- UniqueMessageIdProvider.prototype.register = function (messageId) {
- return this.numberAllocator.use(messageId)
- }
- /**
- * deallocate
- * Deallocate messageId.
- * @param { unsigned int } - messageId to deallocate,
- */
- UniqueMessageIdProvider.prototype.deallocate = function (messageId) {
- this.numberAllocator.free(messageId)
- }
- /**
- * clear
- * Deallocate all messageIds.
- */
- UniqueMessageIdProvider.prototype.clear = function () {
- this.numberAllocator.clear()
- }
- module.exports = UniqueMessageIdProvider
|