Giter Site home page Giter Site logo

ipc-shell's Introduction

IPC Shell

Vea la página para más información.

Es una envoltura para objetos que realizan la comunicación entre procesos, en el estado inicial, está configurado para funcionar con los IPC de electron, este comportamiento puede cambiar sobreescribiendo las funciones _getArgsFromOn e _ipcNodeSend.

Como usar

Importe IPCNodeRegister y registre el IPC:

import { ipcMain } from "electron";
import { IPCNodeRegister } from "ipc-shell"

const ipc = IPCNodeRegister.register("main", ipcMain)

Nota: se usará IpcMain como el tipo de IPC, si fuera para el ipcRenderer debería usar IpcRenderer, para el ipc de win.webContents debería usar WebContents, hablando en términos de electronjs, en general usar la clase del IPC que registra.

Note que ahora ipc fue extendido. Colocando el tipo sería de la siguiente forma (por la inferencia de tipos lo de arriba está bien):

import { IpcMain, ipcMain } from "electron";
import { IPCNode, IPCNodeRegister } from "ipc-shell"

const ipc: IPCNode<IpcMain> = IPCNodeRegister.register("main", ipcMain)

A partir de ahora puede acceder en el mismo proceso a este IPC mediante su nombre:

// somewhere else

import { IpcMain } from "electron";
import { IPCNodeRegister } from "ipc-shell"

// using generic type (recommended)
const ipc = IPCNodeRegister.get<IpcMain>("main");

// using IPCNode type (import from ipc-shell)
const ipc: IPCNode<IpcMain> = IPCNodeRegister.get("main");

El hecho de que se agregue IpcMain es para que pueda seguir utilizando todos lo métodos y variables que este contenga más los extras, si no agrega el tipo únicamente podrá usar los de IPCNode.

Disclaimer

  • This package use Object.assign().
  • All in the IPCBaseNode interface is overwritten when it extends.

ipc-shell's People

Contributors

gbenm avatar

Watchers

 avatar

ipc-shell's Issues

Readable

Creo que podría crear un objecto interno _ipcNodeReadable que almacene un objeto Readable por ipc.

Funcionalidad

  • Una sola instancia de Readable
  • Al llamar readableStream(channel) se crea un Transform que sirve de filtro

IPCNodeError

IPCNodeError

Este es inservible ya que al pasar por el envio este pierde sus campos, por lo que la única forma que se tiene
para arreglar esto es lanzar un simple error (ya que esto es lo que llega al final).

Para mantener la clase lo que se puede hacer es lo siguiente:

  1. Colocar una cadena especial para distinguir que es un error de IPC (por ejemplo un hash de 128 en hex)
  2. Adjuntar después de la cadena especial un JSON con la información (después de aplicar JSON.stringify)
  3. remover la huella y recuperar la información

Al final la clase de error debería de instanciarse como:

new IPCNodeError(info)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.