UNPKG

google-closure-library

Version:
172 lines (136 loc) 4.39 kB
/** * @license * Copyright The Closure Library Authors. * SPDX-License-Identifier: Apache-2.0 */ /** * @fileoverview Definition of Statistics events for BrowserChannels. */ goog.module('goog.net.browserchannelinternal.stats'); goog.module.declareLegacyNamespace(); const Event = goog.require('goog.events.Event'); const EventTarget = goog.require('goog.events.EventTarget'); /** * Enum that identifies events for statistics that are interesting to track. * TODO(jonp) - Change name not to use Event or use EventTarget * @enum {number} */ const Stat = { /** Event indicating a new connection attempt. */ CONNECT_ATTEMPT: 0, /** Event indicating a connection error due to a general network problem. */ ERROR_NETWORK: 1, /** * Event indicating a connection error that isn't due to a general network * problem. */ ERROR_OTHER: 2, /** Event indicating the start of test stage one. */ TEST_STAGE_ONE_START: 3, /** Event indicating the channel is blocked by a network administrator. */ CHANNEL_BLOCKED: 4, /** Event indicating the start of test stage two. */ TEST_STAGE_TWO_START: 5, /** Event indicating the first piece of test data was received. */ TEST_STAGE_TWO_DATA_ONE: 6, /** * Event indicating that the second piece of test data was received and it was * received separately from the first. */ TEST_STAGE_TWO_DATA_TWO: 7, /** Event indicating both pieces of test data were received simultaneously. */ TEST_STAGE_TWO_DATA_BOTH: 8, /** Event indicating stage one of the test request failed. */ TEST_STAGE_ONE_FAILED: 9, /** Event indicating stage two of the test request failed. */ TEST_STAGE_TWO_FAILED: 10, /** * Event indicating that a buffering proxy is likely between the client and * the server. */ PROXY: 11, /** * Event indicating that no buffering proxy is likely between the client and * the server. */ NOPROXY: 12, /** Event indicating an unknown SID error. */ REQUEST_UNKNOWN_SESSION_ID: 13, /** Event indicating a bad status code was received. */ REQUEST_BAD_STATUS: 14, /** Event indicating incomplete data was received */ REQUEST_INCOMPLETE_DATA: 15, /** Event indicating bad data was received */ REQUEST_BAD_DATA: 16, /** Event indicating no data was received when data was expected. */ REQUEST_NO_DATA: 17, /** Event indicating a request timeout. */ REQUEST_TIMEOUT: 18, /** * Event indicating that the server never received our hanging GET and so it * is being retried. */ BACKCHANNEL_MISSING: 19, /** * Event indicating that we have determined that our hanging GET is not * receiving data when it should be. Thus it is dead dead and will be retried. */ BACKCHANNEL_DEAD: 20, /** * The browser declared itself offline during the lifetime of a request, or * was offline when a request was initially made. */ BROWSER_OFFLINE: 21, /** ActiveX is blocked by the machine's admin settings. */ ACTIVE_X_BLOCKED: 22, }; exports.Stat = Stat; /** * Helper function to call the stat event callback. * @param {Stat} stat The stat. */ const notifyStatEvent = function(stat) { statEventTarget.dispatchEvent(new StatEvent(statEventTarget, stat)); }; exports.notifyStatEvent = notifyStatEvent; /** * Returns the singleton event target for stat events. * @return {!EventTarget} The event target for stat events. */ const getStatEventTarget = function() { return statEventTarget; }; exports.getStatEventTarget = getStatEventTarget; /** * Singleton event target for firing stat events * @type {!EventTarget} * @private */ const statEventTarget = new EventTarget(); /** * Stat Event that fires when things of interest happen that may be useful for * applications to know about for stats or debugging purposes. This event fires * on the EventTarget returned by getStatEventTarget. */ const STAT_EVENT = 'statevent'; exports.STAT_EVENT = STAT_EVENT; /** * Event class for goog.net.BrowserChannel.Event.STAT_EVENT * @final */ class StatEvent extends Event { /** * @param {EventTarget} eventTarget The stat event target for * the browser channel. * @param {Stat} stat The stat. */ constructor(eventTarget, stat) { super(STAT_EVENT, eventTarget); /** * The stat * @type {Stat} */ this.stat = stat; } } exports.StatEvent = StatEvent;