All Downloads are FREE. Search and download functionalities are using the official Maven repository.

joynr.proxy.SubscriptionQos.js Maven / Gradle / Ivy

/*
 * #%L
 * %%
 * Copyright (C) 2011 - 2016 BMW Car IT GmbH
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

define(
        "joynr/proxy/SubscriptionQos",
        [
            "joynr/util/Typing",
            "joynr/util/UtilInternal",
            "joynr/system/LoggerFactory"
        ],
        function(Typing, Util, LoggerFactory) {

            var defaultSettings;

            /**
             * @classdesc
             * Base class representing the subscription quality of service settings.
             * This class stores quality of service settings used for subscriptions to
             * attributes and broadcasts in generated proxy objects.
* Subclasses are {@link PeriodicSubscriptionQos}, * {@link OnChangeSubscriptionQos}, and * {@link OnChangeWithKeepAliveSubscriptionQos}.
* The provider will send notifications until the expiry date is reached. The * subscription will automatically expire after the expiry date is reached. * * @summary * Constructor of SubscriptionQos object used for subscriptions to * attributes and events in generated proxy objects. * * @constructor * @name SubscriptionQos * * @param {Object} * [settings] the settings object for the constructor call * @param {Number} * [settings.expiryDate] Deprecated parameter. Use settings.expiryDateMs instead * @param {Number} * [settings.expiryDateMs=SubscriptionQos.NO_EXPIRY_DATE] The expiry date is the * end date of the subscription. This value is provided in milliseconds * (since 1970-01-01T00:00:00.000).
*
* Minimum and Default Values: *
    *
  • minimum value: {@link SubscriptionQos.MIN_EXPIRY_MS}
  • *
  • default value: {@link SubscriptionQos.NO_EXPIRY_DATE}
  • *
* @param {Number} * [settings.validityMs] The validity of the subscription relative to the current time. *
* Special Values: *
    *
  • minimum value: 0
  • *
* @param {Number} * [settings.publicationTtl] Deprecated parameter. Use settings.publicationTtlMs instead * @param {Number} * [settings.publicationTtlMs=SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS] * Time to live for publication messages.
*
* If a notification message can not be delivered within its time * to live, it will be deleted from the system. This value is * provided in milliseconds.
*
* Minimum, Maximum and Default Values: *
    *
  • minimum value: {@link SubscriptionQos.MIN_PUBLICATION_TTL_MS}
  • *
  • maximum value: {@link SubscriptionQos.MAX_PUBLICATION_TTL_MS}
  • *
  • default value: {@link SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS}
  • *
* * @returns {SubscriptionQos} * a subscription Qos Object for subscriptions on attributes * and events */ function SubscriptionQos(settings) { if (!(this instanceof SubscriptionQos)) { // in case someone calls constructor without new keyword (e.g. var c // = Constructor({..})) return new SubscriptionQos(settings); } var log = LoggerFactory.getLogger("joynr.proxy.SubscriptionQos"); /** * Used for serialization. * @name SubscriptionQos#_typeName * @type String */ Util.objectDefineProperty(this, "_typeName", "joynr.SubscriptionQos"); Typing.checkPropertyIfDefined(settings, "Object", "settings"); if (settings && !(settings instanceof SubscriptionQos)) { if (settings.expiryDate !== undefined) { log .warn("SubscriptionQos has been invoked with deprecated settings member \"expiryDate\". " + "By 2017-01-01, the expiry date can only be specified with member \"expiryDateMs\"."); settings.expiryDateMs = settings.expiryDate; settings.expiryDate = undefined; } if (settings.validityMs !== undefined) { if (settings.expiryDateMs !== undefined) { log .warn("SubscriptionQos has been invoked with settings member \"expiryDateMs\" and \"validityMs\"." + " Please ensure that only one of these values is set. Using \"validityMs\""); } settings.expiryDateMs = Date.now() + settings.validityMs; settings.validityMs = undefined; } Typing.checkPropertyIfDefined( settings.expiryDateMs, "Number", "settings.expiryDateMs"); if (settings.publicationTtl !== undefined) { log .warn("SubscriptionQos has been invoked with deprecated settings member \"publicationTtl\". " + "By 2017-01-01, the publication ttl can only be specified with member \"publicationTtlMs\"."); settings.publicationTtlMs = settings.publicationTtl; settings.publicationTtl = undefined; } Typing.checkPropertyIfDefined( settings.publicationTtlMs, "Number", "settings.publicationTtlMs"); } /** * See [constructor description]{@link SubscriptionQos}. * @name SubscriptionQos#expiryDateMs * @type Number */ /** * See [constructor description]{@link SubscriptionQos}. * @name SubscriptionQos#publicationTtlMs * @type Number */ Util.extend(this, defaultSettings, settings); if (this.publicationTtlMs < SubscriptionQos.MIN_PUBLICATION_TTL_MS) { log .warn("publicationTtlMs < MIN_PUBLICATION_TTL_MS. Using MIN_PUBLICATION_TTL_MS: " + SubscriptionQos.MIN_PUBLICATION_TTL_MS); this.publicationTtlMs = SubscriptionQos.MIN_PUBLICATION_TTL_MS; } if (this.publicationTtlMs > SubscriptionQos.MAX_PUBLICATION_TTL_MS) { log .warn("publicationTtlMs > MAX_PUBLICATION_TTL_MS. Using MAX_PUBLICATION_TTL_MS: " + SubscriptionQos.MAX_PUBLICATION_TTL_MS); this.publicationTtlMs = SubscriptionQos.MAX_PUBLICATION_TTL_MS; } if (this.expiryDateMs < SubscriptionQos.MIN_EXPIRY_MS) { log.warn("expiryDateMs < MIN_EXPIRY_MS. Using MIN_EXPIRY_MS: " + SubscriptionQos.MIN_EXPIRY_MS); this.expiryDateMs = SubscriptionQos.MIN_EXPIRY_MS; } /** * The function clearExpiryDate resets the expiry date to the default value SubscriptionQos.NO_EXPIRY_DATE * * * @name SubsriptionQos#clearExpiryDate * @function */ this.clearExpiryDate = function clearExpiryDate() { this.expiryDateMs = SubscriptionQos.NO_EXPIRY_DATE; }; } /** * Minimal value for [publicationTtlMs]{@link SubscriptionQos#publicationTtlMs}. * See [constructor description]{@link SubscriptionQos}. * * @name SubscriptionQos.MIN_PUBLICATION_TTL_MS * @type Number * @default 100 * @static * @readonly */ SubscriptionQos.MIN_PUBLICATION_TTL_MS = 100; /** * Maximum value for [publicationTtlMs]{@link SubscriptionQos#publicationTtlMs}. * See [constructor description]{@link SubscriptionQos}. * * @name SubscriptionQos.MAX_PUBLICATION_TTL_MS * @type Number * @default 2 592 000 000 (30 days) * @static * @readonly */ SubscriptionQos.MAX_PUBLICATION_TTL_MS = 2592000000; /** * Minimal value for [expiryDateMs]{@link SubscriptionQos#expiryDateMs} in milliseconds * (0 secs). See [constructor description]{@link SubscriptionQos}. * * @name SubscriptionQos.MIN_EXPIRY_MS * @type Number * @default 0 * @static * @readonly */ SubscriptionQos.MIN_EXPIRY_MS = 0; /** * Default value for [expiryDateMs]{@link SubscriptionQos#expiryDateMs} in milliseconds * (no expiry date). See [constructor description]{@link SubscriptionQos}. * * @name SubscriptionQos.NO_EXPIRY_DATE * @type Number * @default 0 * @static * @readonly */ SubscriptionQos.NO_EXPIRY_DATE = 0; /** * @name SubscriptionQos.NO_EXPIRY_DATE_TTL * @type Number * @default Util.getMaxLongValue() * @static * @readonly */ SubscriptionQos.NO_EXPIRY_DATE_TTL = Util.getMaxLongValue(); /** * Default value for [publicationTtlMs]{@link SubscriptionQos#publicationTtlMs} in * milliseconds (10 secs). See [constructor description]{@link SubscriptionQos}. * * @name SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS * @type Number * @default 10 000 * @static * @readonly */ SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS = 10000; SubscriptionQos.DEFAULT_PUBLICATION_TTL = SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS; defaultSettings = { expiryDateMs : SubscriptionQos.NO_EXPIRY_DATE, publicationTtlMs : SubscriptionQos.DEFAULT_PUBLICATION_TTL_MS }; return SubscriptionQos; });




© 2015 - 2025 Weber Informatics LLC | Privacy Policy