Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'pm2-axon-rpc' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
pm._rpc = function (opts) {
var req = axon.socket("req"),
rpc_sock = req.connect(opts.sockPath),
rpc_client = new rpc.Client(req);
// Connect RPC server.
rpc_sock.on('connect', function () {
// Execute request.
var waterfalls = opts.events.map(function (event) {
return function (next) {
var cb = typeof event[event.length - 1] == 'function' ? event.pop() : null;
if (cb) {
event.push(function () {
// Wrap arguments, no [].slice (avoid leak)!!!
var args = new Array(arguments.length);
for (var i = 0; i < args; i++) {
args[i] = arguments[i];
}
cb.apply(null, arguments);
next();
pm._rpc = function (opts) {
var req = axon.socket('req')
var rpcSock = req.connect(opts.sockPath)
var rpcClient = new rpc.Client(req)
// Connect RPC server.
rpcSock.on('connect', function () {
// Execute request.
var waterfalls = opts.events.map(function (event) {
return function (next) {
var cb = typeof event[event.length - 1] === 'function' ? event.pop() : null
if (cb) {
event.push(function () {
// Wrap arguments, no [].slice (avoid leak)!!!
var args = new Array(arguments.length)
for (var i = 0; i < args; i++) {
args[i] = arguments[i]
}
cb.apply(opts.context, arguments)
next()
Router.prototype.addNode = function(data) {
if(data.namespace && data.namespace[0] === '$')
return debug('[tmp-node] connected ' + data.namespace + '(' + data.id + ')')
this.nodes[data.id] = _.clone(data)
var obj = this.nodes[data.id]
obj.req = axon.socket('req')
obj.client = new rpc.Client(obj.req)
obj.req.connect(data.port, data.hostname)
obj.timer = new Measured.Timer()
// add methods to routing
for(var i in data.methods){
this.addMethod(data.methods[i], data.id)
}
// namespace collection
if (this.namespace[data.namespace]){
this.namespace[data.namespace].push(data.id)
}else{
this.namespace[data.namespace] = [data.id]
}
this.version = crypto.createHash('md5')
.update(_.keys(this.routing).join(',')).digest('hex')
// this.syncAll()
}
async registerToBus(socketsPath) {
this.subSocket = axon.socket('sub-emitter');
this.subSocket.connect(socketsPath.pub);
this.busRpcSocket = axon.socket('req');
this.busRpcSocket.connect(socketsPath.rpc);
this.busRpcClient = new RPCClient(this.busRpcSocket);
this.busRpcClientCallPromisified = util.promisify(this.busRpcClient.call);
// Channel Publish Socket is only required if the module has events
if (this.eventsList.length > 0) {
this.pubSocket = axon.socket('pub-emitter');
this.pubSocket.connect(socketsPath.sub);
}
// Channel RPC Server is only required if the module has actions
if (this.actionsList.length > 0) {
this.rpcSocketPath = `unix://${socketsPath.root}/${this.moduleAlias}_rpc.sock`;
this.rpcSocket = axon.socket('rep');
this.rpcSocket.bind(this.rpcSocketPath);
this.rpcServer = new RPCServer(this.rpcSocket);
this.busRpcClient = new RPCClient(this.busRpcSocket);
this.busRpcClientCallPromisified = util.promisify(this.busRpcClient.call);
// Channel Publish Socket is only required if the module has events
if (this.eventsList.length > 0) {
this.pubSocket = axon.socket('pub-emitter');
this.pubSocket.connect(socketsPath.sub);
}
// Channel RPC Server is only required if the module has actions
if (this.actionsList.length > 0) {
this.rpcSocketPath = `unix://${socketsPath.root}/${this.moduleAlias}_rpc.sock`;
this.rpcSocket = axon.socket('rep');
this.rpcSocket.bind(this.rpcSocketPath);
this.rpcServer = new RPCServer(this.rpcSocket);
this.rpcServer.expose('invoke', (action, cb) => {
this.invoke(action)
.then(data => cb(null, data))
.catch(error => cb(error));
});
this.rpcServer.expose('invokePublic', (action, cb) => {
this.invokePublic(action)
.then(data => cb(null, data))
.catch(error => cb(error));
});
}
return this.setupSockets();
}
activateRPC : function() {
console.log('Launching Interactor exposure');
var self = this;
var rep = axon.socket('rep');
var daemon_server = new rpc.Server(rep);
var sock = rep.bind(cst.INTERACTOR_RPC_PORT);
daemon_server.expose({
kill : function(cb) {
console.log('Killing interactor');
cb(null);
return Daemon.exit();
},
passwordSet : function(cb) {
global._pm2_password_protected = true;
return cb(null);
},
getInfos : function(cb) {
if (self.opts &&
self.opts.DAEMON_ACTIVE == true)
return cb(null, {
//if (!(this instanceof Bash)) return new Bash(opts);
var self = this;
EventEmitter.call(this);
this.sub_port = sub_port;
this.rpc_port = rpc_port;
this.bind_host = bind_host;
var sub = axon.socket('sub-emitter');
var sub_sock = this.sub_sock = sub.connect(sub_port);
this.bus = sub;
var req = axon.socket("req");
var rpc_sock = this.rpc_sock = req.connect(rpc_port);
this.rpc_client = new rpc.Client(req);
this.rpc = {};
/**
* Disconnect socket connections. This will allow Node to exit automatically.
* Further calls to PM2 from this object will throw an error.
*/
this.disconnect = function () {
self.sub_sock.close();
self.rpc_sock.close();
};
/**
* Generate method by requesting exposed methods by PM2
* You can now control/interact with PM2
*/
if (this.actions[actionFullName]) {
throw new Error(
`Action "${actionFullName}" already registered with bus.`,
);
}
this.actions[actionFullName] = actions[actionName];
});
let { channel } = options;
if (options.rpcSocketPath) {
const rpcSocket = axon.socket('req');
rpcSocket.connect(options.rpcSocketPath);
channel = new RPCClient(rpcSocket);
this.rpcClients[moduleAlias] = rpcSocket;
}
this.channels[moduleAlias] = {
channel,
actions,
events,
type: options.type,
};
}
Client.prototype.launchRPC = function launchRPC(cb) {
var self = this;
debug('Launching RPC client on socket file %s', this.rpc_socket_file);
var req = axon.socket('req');
this.client = new rpc.Client(req);
var connectHandler = function() {
self.client.sock.removeListener('error', errorHandler);
debug('RPC Connected to Daemon');
if (cb) {
setTimeout(function() {
cb(null);
}, 4);
}
};
var errorHandler = function(e) {
self.client.sock.removeListener('connect', connectHandler);
if (cb) {
return cb(e);
}
Client.prototype.pingDaemon = function pingDaemon(cb) {
var req = axon.socket('req');
var client = new rpc.Client(req);
var that = this;
debug('[PING PM2] Trying to connect to server');
client.sock.once('reconnect attempt', function() {
client.sock.close();
debug('Daemon not launched');
process.nextTick(function() {
return cb(false);
});
});
client.sock.once('error', function(e) {
if (e.code === 'EACCES') {
fs.stat(that.conf.DAEMON_RPC_PORT, function(e, stats) {
if (stats.uid === 0) {