feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
73
api.hyungi.net/node_modules/pm2-axon/lib/sockets/rep.js
generated
vendored
Normal file
73
api.hyungi.net/node_modules/pm2-axon/lib/sockets/rep.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var slice = require('../utils').slice;
|
||||
var debug = require('debug')('axon:rep');
|
||||
var Message = require('amp-message');
|
||||
var Socket = require('./sock');
|
||||
|
||||
/**
|
||||
* Expose `RepSocket`.
|
||||
*/
|
||||
|
||||
module.exports = RepSocket;
|
||||
|
||||
/**
|
||||
* Initialize a new `RepSocket`.
|
||||
*
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function RepSocket() {
|
||||
Socket.call(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inherits from `Socket.prototype`.
|
||||
*/
|
||||
|
||||
RepSocket.prototype.__proto__ = Socket.prototype;
|
||||
|
||||
/**
|
||||
* Incoming.
|
||||
*
|
||||
* @param {net.Socket} sock
|
||||
* @return {Function} closure(msg, mulitpart)
|
||||
* @api private
|
||||
*/
|
||||
|
||||
RepSocket.prototype.onmessage = function(sock){
|
||||
var self = this;
|
||||
|
||||
return function (buf){
|
||||
var msg = new Message(buf);
|
||||
var args = msg.args;
|
||||
|
||||
var id = args.pop();
|
||||
args.unshift('message');
|
||||
args.push(reply);
|
||||
self.emit.apply(self, args);
|
||||
|
||||
function reply() {
|
||||
var fn = function(){};
|
||||
var args = slice(arguments);
|
||||
args[0] = args[0] || null;
|
||||
|
||||
var hasCallback = 'function' == typeof args[args.length - 1];
|
||||
if (hasCallback) fn = args.pop();
|
||||
|
||||
args.push(id);
|
||||
|
||||
if (sock.writable) {
|
||||
sock.write(self.pack(args), function(){ fn(true) });
|
||||
return true;
|
||||
} else {
|
||||
debug('peer went away');
|
||||
process.nextTick(function(){ fn(false) });
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user