Skip to content

RudolfVonKrugstein/gleam_processgroups

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

process groups for gleam

Simple wrapper around erlang process groups in gleam.

This library mainly wraps erlang process groups, so go to its documentation for details.

Package Version Hex Docs

Usage

Add this library to your Gleam project

gleam add processgroups

And use it in your project

import io
import processgroups as pg
import gleam/erlang/process

// some type we use to distinguish process groups
// could also be strings
type ProcessGroups {
    ExampleProcessGroup
}

pub fn main() {
    // start process groups
    pg.start_link()

    // put ourself into a process group
    pg.join(ExampleProcessGroup, process.self())

    // list processes in the group
    io.debug(pg.get_members(ExampleProcessGroup))
    // output: [<our-process-id>]

    // leave the group
    pg.leave(ExampleProcessGroup, process.self())

    // list processes in the group
    io.debug(pg.get_members(ExampleProcessGroup))
    // output: []

    // monitor a process group
    let #(group_monitor, current_processes) = pg.monitor(ExampleProcessGroup)
    io.debug(current_processes)
    // output: []
    
    // join to create monitoring event
    pg.join(ExampleProcessGroup, process.self())

    // get the created event
    let assert Ok(pg.ProcessJoined(ExampleProcessGroup, new_pids)) = pg.selecting_process_group_monitor(
      process.new_selector(),
      group_monitor,
      fn(pid) {pid}
    ) |> process.select(100)
}

Further documentation can be found at https://hexdocs.pm/processgroups.

Development

gleam run   # Run the project
gleam test  # Run the tests
gleam shell # Run an Erlang shell

About

Processs Groups for gleam

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages