feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
92
api.hyungi.net/node_modules/pm2-axon/lib/sockets/sub-emitter.js
generated
vendored
Normal file
92
api.hyungi.net/node_modules/pm2-axon/lib/sockets/sub-emitter.js
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var Message = require('amp-message');
|
||||
var SubSocket = require('./sub');
|
||||
|
||||
/**
|
||||
* Expose `SubEmitterSocket`.
|
||||
*/
|
||||
|
||||
module.exports = SubEmitterSocket;
|
||||
|
||||
/**
|
||||
* Initialzie a new `SubEmitterSocket`.
|
||||
*
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function SubEmitterSocket() {
|
||||
this.sock = new SubSocket;
|
||||
this.sock.onmessage = this.onmessage.bind(this);
|
||||
this.bind = this.sock.bind.bind(this.sock);
|
||||
this.connect = this.sock.connect.bind(this.sock);
|
||||
this.close = this.sock.close.bind(this.sock);
|
||||
this.listeners = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Message handler.
|
||||
*
|
||||
* @param {net.Socket} sock
|
||||
* @return {Function} closure(msg, mulitpart)
|
||||
* @api private
|
||||
*/
|
||||
|
||||
SubEmitterSocket.prototype.onmessage = function(){
|
||||
var listeners = this.listeners;
|
||||
var self = this;
|
||||
|
||||
return function(buf){
|
||||
var msg = new Message(buf);
|
||||
var topic = msg.shift();
|
||||
|
||||
for (var i = 0; i < listeners.length; ++i) {
|
||||
var listener = listeners[i];
|
||||
|
||||
var m = listener.re.exec(topic);
|
||||
if (!m) continue;
|
||||
|
||||
listener.fn.apply(this, m.slice(1).concat(msg.args));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Subscribe to `event` and invoke the given callback `fn`.
|
||||
*
|
||||
* @param {String} event
|
||||
* @param {Function} fn
|
||||
* @return {SubEmitterSocket} self
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SubEmitterSocket.prototype.on = function(event, fn){
|
||||
var re = this.sock.subscribe(event);
|
||||
this.listeners.push({
|
||||
event: event,
|
||||
re: re,
|
||||
fn: fn
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Unsubscribe with the given `event`.
|
||||
*
|
||||
* @param {String} event
|
||||
* @return {SubEmitterSocket} self
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SubEmitterSocket.prototype.off = function(event){
|
||||
for (var i = 0; i < this.listeners.length; ++i) {
|
||||
if (this.listeners[i].event === event) {
|
||||
this.sock.unsubscribe(this.listeners[i].re);
|
||||
this.listeners.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
Reference in New Issue
Block a user