smipc
v1.0.31
Published
This package is used to transport big data between processes, bases on shared memory.
Readme
smipc for nodejs
This package is used to transport big data between processes, bases on shared memory.
For now, only windows is supported.
API
init(isTraceMode: bool): void: initialize library, make sure call it firstlyisTraceMode: print some debug info if set true.
openChannel(cid: string, mode: number, chanSz: number): boolmode: CHAN_R=open channel as reader, CHAN_W=open channel as writer
readChannel(cid: string, buf: Uint8Array, sz: number, blocking: bool): numberblocking: if set true, block operation until received the specified amount of data or opposite end closed
writeChannel(cid: string, data: Uint8Array, sz: number): boolprintChannelStatus(cid: string): boolcloseChannel(cid: string): booldeinit(): void: clean library
Demo
const smipc = require('smipc')
const testCid = "test-chan"
const dataSz = 1024
args = process.argv.slice(2)
if (args[0] == '-r') {
// init library
smipc.init(true)
smipc.openChannel(testCid, smipc.CHAN_R, 12)
// generate test data
let buf = new Uint8Array(dataSz)
// send data
smipc.printChannelStatus(testCid)
let n = smipc.readChannel(testCid, buf, dataSz, true)
console.log('read ' + n)
smipc.printChannelStatus(testCid)
// close channel
smipc.closeChannel(testCid)
// clean library
smipc.deinit()
// print test data
let s = ''
for (let i = 0; i < dataSz; i++) {
s += buf[i] + ' '
}
console.log(s)
} else if (args[0] == '-w') {
smipc.init(true)
smipc.openChannel(testCid, smipc.CHAN_W, 12)
// generate test data
let buf = new Uint8Array(dataSz)
for (let i = 0; i < dataSz; i++) {
buf[i] = Math.round(Math.random() * 255)
}
// send data
smipc.printChannelStatus(testCid)
smipc.writeChannel(testCid, buf, dataSz)
smipc.printChannelStatus(testCid)
// clean
smipc.closeChannel(testCid)
smipc.deinit()
// print test data
let s = ''
for (let i = 0; i < dataSz; i++) {
s += buf[i] + ' '
}
console.log(s)
} else {
console.error('Invalid option.')
}