| // Copyright 2014 The Closure Library Authors. All Rights Reserved. |
| // |
| // 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. |
| |
| goog.provide('goog.pubsub.TopicId'); |
| |
| |
| |
| /** |
| * A templated class that is used to register {@code goog.pubsub.PubSub} |
| * subscribers. |
| * |
| * Typical usage for a publisher: |
| * <code> |
| * /** @type {!goog.pubsub.TopicId<!zorg.State>} |
| * zorg.TopicId.STATE_CHANGE = new goog.pubsub.TopicId( |
| * goog.events.getUniqueId('state-change')); |
| * |
| * // Compiler enforces that these types are correct. |
| * pubSub.publish(zorg.TopicId.STATE_CHANGE, zorg.State.STARTED); |
| * </code> |
| * |
| * Typical usage for a subscriber: |
| * <code> |
| * // Compiler enforces the callback parameter type. |
| * pubSub.subscribe(zorg.TopicId.STATE_CHANGE, function(state) { |
| * if (state == zorg.State.STARTED) { |
| * // Handle STARTED state. |
| * } |
| * }); |
| * </code> |
| * |
| * @param {string} topicId |
| * @template PAYLOAD |
| * @constructor |
| * @final |
| * @struct |
| */ |
| goog.pubsub.TopicId = function(topicId) { |
| /** |
| * @const |
| * @private |
| */ |
| this.topicId_ = topicId; |
| }; |
| |
| |
| /** @override */ |
| goog.pubsub.TopicId.prototype.toString = function() { |
| return this.topicId_; |
| }; |