Skip to content

Commit

Permalink
📝 add README
Browse files Browse the repository at this point in the history
  • Loading branch information
zyao89 committed Aug 12, 2019
1 parent 0f141a0 commit d309a82
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 27 deletions.
93 changes: 93 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# @2o3t/process-manager

Process manager for Nodejs.

Ideas from https://github.com/Microsoft/vscode.

## Installation

```sh
npm install @2o3t/process-manager
```

or

```sh
yarn add @2o3t/process-manager
```

## Usage

**Client** (main process):

```js
const PM = require('@2o3t/process-manager');
const client = new PM.Client(__dirname + '/sub-processes.js');
const channel = client.getChannel('channelName');
channel.call('info', {
// something
}).then(data => {
console.log('data', data);
});
channel.listen('ccc')(aa => {
console.log('listen..', aa);
});
```


**Server** (sub process):

```js
const PM = require('@2o3t/process-manager');
const server = new PM.Server();
const channel = new PM.ServerChannel({
info(arg) {
console.log('arg: ', arg);
return Promise.resolve(server.info);
},
ccc(emit) {
emit('100w');
emit('101w');
// server.dispose();
emit('102w');
emit('103w');
emit('104w');
},
});
console.log('server ok');
server.registerChannel('channelName', channel);
```

## Options

**`Client`** options in paramters

**modulePath**: file path of sub process

**options**: Object.

| key | type | desc |
|-----|-----|-----|
| **serverName** | string | A descriptive name for the server this connection is to. Used in logging. |
| **timeout**? | number | Time in millies before killing the ipc process. The next request after killing will start it again. |
| **args**? | string[] | Arguments to the module to execute. |
| **env**? | any | Environment key-value pairs to be passed to the process that gets spawned for the ipc. |
| **debug**? | number | Allows to assign a debug port for debugging the application executed. |
| **debugBrk**? | number | Allows to assign a debug port for debugging the application and breaking it on the first line. |
| **freshExecArgv**? | boolean | See https://github.com/Microsoft/vscode/issues/27665 <br> * Allows to pass in fresh execArgv to the forked process such that it doesn't inherit them from `process.execArgv`. <br> * e.g. Launching the extension host process with `--inspect-brk=xxx` and then forking a process from the extension host results in the forked process inheriting `--inspect-brk=xxx`. |
| **useQueue**? | boolean | Enables our createQueuedSender helper for this Client. Uses a queue when the internal Node.js queue is full of messages - see notes on that method. |



**`Server`** options in paramters

**options**: Object.

| key | type | desc |
|-----|-----|-----|
| **timeoutDelay**? | number | They will timeout after `timeoutDelay`. |


## License

MIT
5 changes: 5 additions & 0 deletions lib/Client.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ const ChannelClient = require('./channel/ChannelClient');
// useQueue?: boolean;
// }

const defaultOptions = {
serverName: 'UNKNOW',
};

class Client {
/**
*Creates an instance of Client.
Expand All @@ -67,6 +71,7 @@ class Client {
this.channels = new Map();
this.child = null;
this._client = null;
this.options = Object.assign({}, defaultOptions, options, { timeout });
}

/**
Expand Down
51 changes: 35 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,37 @@
{
"name": "@2o3t/process-manager",
"version": "0.0.1",
"description": "",
"main": "index.js",
"directories": {
"lib": "lib"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zyao89 <[email protected]>",
"license": "ISC",
"devDependencies": {
"eslint": "^5.16.0",
"eslint-config-2o3t": "^1.1.15"
}
"name": "@2o3t/process-manager",
"version": "0.0.2",
"description": "Process manager for Nodejs.",
"main": "index.js",
"directories": {
"lib": "lib"
},
"files": [
"lib",
"index.js"
],
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"process",
"manager",
"pm",
"process-manager",
"ipc"
],
"author": "zyao89 <[email protected]>",
"license": "MIT",
"homepage": "https://github.com/2o3t/process-manager",
"repository": "github:2o3t/process-manager",
"bugs": {
"url": "https://github.com/2o3t/process-manager/issues"
},
"engines": {
"node": ">=6"
},
"devDependencies": {
"eslint": "^5.16.0",
"eslint-config-2o3t": "^1.1.15"
}
}
11 changes: 4 additions & 7 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@

const PM = require('../');
const client = new PM.Client(__dirname + '/sub-processes.js');
const channel = client.getChannel('abc');
channel.call('ccd', 789).then(data => {
const channel = client.getChannel('channelName');
channel.call('info', {
// something
}).then(data => {
console.log('data', data);
});
setInterval(() => {
channel.call('ccd', 'info').then(data => {
console.log('info: ', data);
});
}, 2000);
channel.listen('ccc')(aa => {
console.log('listen..', aa);
});
Expand Down
7 changes: 3 additions & 4 deletions test/sub-processes.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
const PM = require('../');
const server = new PM.Server();
const channel = new PM.ServerChannel({
ccd(arg) {
info(arg) {
console.log('arg: ', arg);
if (arg === 'info') return Promise.resolve(server.info);
return Promise.resolve(arg);
return Promise.resolve(server.info);
},
ccc(emit) {
emit('100w');
Expand All @@ -29,4 +28,4 @@ const channel = new PM.ServerChannel({
},
});
console.log('server ok');
server.registerChannel('abc', channel);
server.registerChannel('channelName', channel);

0 comments on commit d309a82

Please sign in to comment.