Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / socket.io-client / lib / events.js
1 /**
2  * socket.io
3  * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
4  * MIT Licensed
5  */
6
7 (function (exports, io) {
8
9   /**
10    * Expose constructor.
11    */
12
13   exports.EventEmitter = EventEmitter;
14
15   /**
16    * Event emitter constructor.
17    *
18    * @api public.
19    */
20
21   function EventEmitter () {};
22
23   /**
24    * Adds a listener
25    *
26    * @api public
27    */
28
29   EventEmitter.prototype.on = function (name, fn) {
30     if (!this.$events) {
31       this.$events = {};
32     }
33
34     if (!this.$events[name]) {
35       this.$events[name] = fn;
36     } else if (io.util.isArray(this.$events[name])) {
37       this.$events[name].push(fn);
38     } else {
39       this.$events[name] = [this.$events[name], fn];
40     }
41
42     return this;
43   };
44
45   EventEmitter.prototype.addListener = EventEmitter.prototype.on;
46
47   /**
48    * Adds a volatile listener.
49    *
50    * @api public
51    */
52
53   EventEmitter.prototype.once = function (name, fn) {
54     var self = this;
55
56     function on () {
57       self.removeListener(name, on);
58       fn.apply(this, arguments);
59     };
60
61     on.listener = fn;
62     this.on(name, on);
63
64     return this;
65   };
66
67   /**
68    * Removes a listener.
69    *
70    * @api public
71    */
72
73   EventEmitter.prototype.removeListener = function (name, fn) {
74     if (this.$events && this.$events[name]) {
75       var list = this.$events[name];
76
77       if (io.util.isArray(list)) {
78         var pos = -1;
79
80         for (var i = 0, l = list.length; i < l; i++) {
81           if (list[i] === fn || (list[i].listener && list[i].listener === fn)) {
82             pos = i;
83             break;
84           }
85         }
86
87         if (pos < 0) {
88           return this;
89         }
90
91         list.splice(pos, 1);
92
93         if (!list.length) {
94           delete this.$events[name];
95         }
96       } else if (list === fn || (list.listener && list.listener === fn)) {
97         delete this.$events[name];
98       }
99     }
100
101     return this;
102   };
103
104   /**
105    * Removes all listeners for an event.
106    *
107    * @api public
108    */
109
110   EventEmitter.prototype.removeAllListeners = function (name) {
111     if (name === undefined) {
112       this.$events = {};
113       return this;
114     }
115
116     if (this.$events && this.$events[name]) {
117       this.$events[name] = null;
118     }
119
120     return this;
121   };
122
123   /**
124    * Gets all listeners for a certain event.
125    *
126    * @api publci
127    */
128
129   EventEmitter.prototype.listeners = function (name) {
130     if (!this.$events) {
131       this.$events = {};
132     }
133
134     if (!this.$events[name]) {
135       this.$events[name] = [];
136     }
137
138     if (!io.util.isArray(this.$events[name])) {
139       this.$events[name] = [this.$events[name]];
140     }
141
142     return this.$events[name];
143   };
144
145   /**
146    * Emits an event.
147    *
148    * @api public
149    */
150
151   EventEmitter.prototype.emit = function (name) {
152     if (!this.$events) {
153       return false;
154     }
155
156     var handler = this.$events[name];
157
158     if (!handler) {
159       return false;
160     }
161
162     var args = Array.prototype.slice.call(arguments, 1);
163
164     if ('function' == typeof handler) {
165       handler.apply(this, args);
166     } else if (io.util.isArray(handler)) {
167       var listeners = handler.slice();
168
169       for (var i = 0, l = listeners.length; i < l; i++) {
170         listeners[i].apply(this, args);
171       }
172     } else {
173       return false;
174     }
175
176     return true;
177   };
178
179 })(
180     'undefined' != typeof io ? io : module.exports
181   , 'undefined' != typeof io ? io : module.parent.exports
182 );