Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

erlang-processes

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

erlang-processes

Erlang style processes in JavaScript

  • 2.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Build Status

Experiment to reproduce Erlang style processes in browser. The api follows the one from Erlang. All are found on the ProcessSystem class

Documentation

https://elixirscript.github.io/processes/

Demo

https://elixirscript.github.io/processes/demo/

Usage
  • First, import the ProcessSystem create a new instance of one.

    const Processes = require('erlang-processes')
    let system = new Processes.default.ProcessSystem()
    
  • Now you can spawn processes using the system.

    A process will switch to other processes when yield is used and will run until it completes.

    var pid1 = system.spawn(function*() {
      while (true) {
        yield system.receive(function(value) {
          return console.log(value)
        })
    
        system.send(pid2, 'message from 1')
      }
    })
    
    system.register('Sally', pid1)
    
    var pid2 = system.spawn(function*() {
      while (true) {
        system.send('Sally', 'message from 2')
    
        yield system.receive(function(value) {
          return console.log(value)
        })
      }
    })
    

API

  • ProcessSystem

    • spawn(fun*) : pid - Starts a process represented by the given generator function
    • spawn(module, fun, args) : pid - Starts a process using the generator function from the specified module
    • link(pid) : void - links the current process with the process from the given pid
    • unlink(pid) : void - unlinks the current process from the process from the given pid
    • register(name, pid) : void - registers the given name to the pid
    • whereis(name) : pid - returns the pid registered by the given name or null if not registered
    • unregister(pid) : void - unregisters the names associated with the pid
    • registered() : Array - returns the liast of names that are registered
    • pid() : pid` - returns the current process's pid
    • pidof(obj) : pid - takes the input and tries to find the pid. Input can be a pid, Process, or name the pid is associated with
    • send(pid, msg) : msg - sends a message the the process represented by the pid
    • receive(fun, timeout = 0, timeoutFn = () => true) - Tells the current process to receive a message that the function can handle. If no match then the process is put in the suspended state until a message arrives or the timeout is reached. If the timeout is reached and no msg matches, then the timeoutFn is called
    • sleep(duration) - puts the current process to sleep
    • exit(reason) - terminates the current process with the given reason.
    • exit(pid, reason) - tells the process with the pid to exit with the given reason
    • error(reason) - terminates the current process with an error
    • process_flag(pid, flag, value) - Sets flags on the given process.
    • process_flag(flag, value) - Sets flags on the current process.
      • Note: the only flag respected is the Symbol.for("trap_exit") flag. If value is true, then exit signals from linked processes are turned into messages and sent to the current processes mailbox. If value is false, the exit is treated as normal and terminates the process. Setting it to true is useful for supervising processes.
    • put(key, value) - Adds a value to the current process's dictionary
    • get(key, default_value = null) - Gets a value from the current process's dictionary or the default if key not in dictionary
    • get_process_dict() - Gets the current process's dictionary
    • get_keys() - Gets all the keys from the current process's dictionary
    • get_keys(value) - Gets all the keys from the current process's dictionary with the given value
    • erase(key) - Removes the key and the associated value from the current process's dictionary
    • erase() - Removes all entries from the current process's dictionary
    • is_alive(pid) - Returns if the given pid is alive
    • make_ref() - Returns a unique reference
    • list() - Returns a list of all the pids
    • monitor(pid) - Monitors the given process
    • demonitor(ref) - Removes the monitor
  • ProcessSystem.run(fun, args, context = null) - A static generator function used to wrap a normal function or generator. If fun is a function, it returns the value, if it's a generator, then it delegates yielding to the generator.

References

Keywords

FAQs

Package last updated on 07 May 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc