123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /**
- @module MistUI
- */
- /**
- The IPC provider wrapper to communicate to the backend
- @class ipcProviderWrapper
- @constructor
- */
- const { ipcRenderer } = require('electron');
- /**
- Gets the writable property.
- @method on('ipcProvider-setWritable')
- */
- ipcRenderer.on('ipcProvider-setWritable', (e, writable) => {
- // console.debug('ipcProvider-setWritable', writable);
- ipcProviderWrapper.writable = writable;
- });
- const ipcProviderWrapper = {
- writable: false,
- /**
- Connects the IPC on the backend to the geth node
- Note: web3.eth.net.isListening (previously: web3.isConnected) will always return true,
- as otherwise race conditions can occur,
- letting it look like youre not connected via IPC.
- @method connect
- */
- connect(path) {
- // console.debug('ipcProviderWrapper: connect');
- ipcRenderer.send('ipcProvider-create', path);
- return this;
- },
- /**
- Returns data from the IPC through the backend
- @method on
- @param {String} name `connect`, `error`, `end`, `timeout` or `data`
- @param {Funciton} callback
- */
- on(name, callback) {
- // console.debug('ipcProviderWrapper: add listener', name);
- ipcRenderer.on(`ipcProvider-${name}`, (e, result) => {
- callback(result);
- });
- },
- /**
- Returns data from the IPC through the backend
- @method once
- @param {String} name `connect`, `error`, `end`, `timeout` or `data`
- @param {Funciton} callback
- */
- once(name, callback) {
- // console.debug('ipcProviderWrapper: add listener', name);
- ipcRenderer.once(`ipcProvider-${name}`, (e, result) => {
- callback(result);
- });
- },
- /**
- Removes listener
- @method removeListener
- */
- removeListener(name, callback) {
- // console.debug('ipcProviderWrapper: remove listener', name);
- ipcRenderer.removeListener(`ipcProvider-${name}`, callback);
- },
- /**
- Removes all listeners
- @method removeAllListeners
- */
- removeAllListeners(name) {
- // console.debug('ipcProviderWrapper: remove all listeners', name);
- if (name) {
- ipcRenderer.removeAllListeners(`ipcProvider-${name}`);
- } else {
- ipcRenderer.removeAllListeners('ipcProvider-error');
- ipcRenderer.removeAllListeners('ipcProvider-end');
- ipcRenderer.removeAllListeners('ipcProvider-timeout');
- ipcRenderer.removeAllListeners('ipcProvider-connect');
- }
- },
- /**
- Write to the IPC connection through the backend
- @method write
- */
- write(payload) {
- // console.debug('ipcProviderWrapper: write payload');
- ipcRenderer.send('ipcProvider-write', payload);
- },
- /**
- Write synchronous to the IPC connection through the backend
- @method writeSync
- */
- writeSync(payload) {
- // console.debug('ipcProviderWrapper: write payload (sync)');
- return ipcRenderer.sendSync('ipcProvider-writeSync', payload);
- }
- };
- module.exports = ipcProviderWrapper;
|