108 lines
4.0 KiB
JavaScript
108 lines
4.0 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright The Closure Library Authors.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview An interface for asynchronous message-passing channels.
|
|
*
|
|
* This interface is useful for writing code in a message-passing style that's
|
|
* independent of the underlying communication medium. It's also useful for
|
|
* adding decorators that wrap message channels and add extra functionality on
|
|
* top. For example, {@link goog.messaging.BufferedChannel} enqueues messages
|
|
* until communication is established, while {@link goog.messaging.MultiChannel}
|
|
* splits a single underlying channel into multiple virtual ones.
|
|
*
|
|
* Decorators should be passed their underlying channel(s) in the constructor,
|
|
* and should assume that those channels are already connected. Decorators are
|
|
* responsible for disposing of the channels they wrap when the decorators
|
|
* themselves are disposed. Decorators should also follow the APIs of the
|
|
* individual methods listed below.
|
|
*/
|
|
|
|
|
|
goog.provide('goog.messaging.MessageChannel');
|
|
|
|
|
|
|
|
/**
|
|
* @interface
|
|
*/
|
|
goog.messaging.MessageChannel = function() {};
|
|
|
|
|
|
/**
|
|
* Initiates the channel connection. When this method is called, all the
|
|
* information needed to connect the channel has to be available.
|
|
*
|
|
* Implementers should only require this method to be called if the channel
|
|
* needs to be configured in some way between when it's created and when it
|
|
* becomes active. Otherwise, the channel should be immediately active and this
|
|
* method should do nothing but immediately call opt_connectCb.
|
|
*
|
|
* @param {Function=} opt_connectCb Called when the channel has been connected
|
|
* and is ready to use.
|
|
*/
|
|
goog.messaging.MessageChannel.prototype.connect = function(opt_connectCb) {};
|
|
|
|
|
|
/**
|
|
* Gets whether the channel is connected.
|
|
*
|
|
* If {@link #connect} is not required for this class, this should always return
|
|
* true. Otherwise, this should return true by the time the callback passed to
|
|
* {@link #connect} has been called and always after that.
|
|
*
|
|
* @return {boolean} Whether the channel is connected.
|
|
*/
|
|
goog.messaging.MessageChannel.prototype.isConnected = function() {};
|
|
|
|
|
|
/**
|
|
* Registers a service to be called when a message is received.
|
|
*
|
|
* Implementers shouldn't impose any restrictions on the service names that may
|
|
* be registered. If some services are needed as control codes,
|
|
* {@link goog.messaging.MultiMessageChannel} can be used to safely split the
|
|
* channel into "public" and "control" virtual channels.
|
|
*
|
|
* @param {string} serviceName The name of the service.
|
|
* @param {function((string|!Object))} callback The callback to process the
|
|
* incoming messages. Passed the payload. If opt_objectPayload is set, the
|
|
* payload is decoded and passed as an object.
|
|
* @param {boolean=} opt_objectPayload If true, incoming messages for this
|
|
* service are expected to contain an object, and will be deserialized from
|
|
* a string automatically if necessary. It's the responsibility of
|
|
* implementors of this class to perform the deserialization.
|
|
*/
|
|
goog.messaging.MessageChannel.prototype.registerService = function(
|
|
serviceName, callback, opt_objectPayload) {};
|
|
|
|
|
|
/**
|
|
* Registers a service to be called when a message is received that doesn't
|
|
* match any other services.
|
|
*
|
|
* @param {function(string, (string|!Object))} callback The callback to process
|
|
* the incoming messages. Passed the service name and the payload. Since
|
|
* some channels can pass objects natively, the payload may be either an
|
|
* object or a string.
|
|
*/
|
|
goog.messaging.MessageChannel.prototype.registerDefaultService = function(
|
|
callback) {};
|
|
|
|
|
|
/**
|
|
* Sends a message over the channel.
|
|
*
|
|
* @param {string} serviceName The name of the service this message should be
|
|
* delivered to.
|
|
* @param {string|!Object} payload The value of the message. If this is an
|
|
* Object, it is serialized to a string before sending if necessary. It's
|
|
* the responsibility of implementors of this class to perform the
|
|
* serialization.
|
|
*/
|
|
goog.messaging.MessageChannel.prototype.send = function(serviceName, payload) {
|
|
};
|