mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-01-22 23:08:50 +08:00
79e5c432b3
* Isolate evaluation in separate node for each session * Start new remote upon first evaluation and handle nodedown * Add UI for managing evaluation node, improve naming and structure * Show runtime initialization errors and some fixes * Improve standalone node initialization * Correctly handle multiple sessions connecting to the same node * Fix session tests concerning evaluation * Documentation and some refactoring * Various improvements * Configure schedulers to get to sleep immediately after evaluation * Move EvaluatorSpervisor into the Remote namespace * Fix evaluators cleanup * Add tests * Improve flash messages * Introduce remote genserver taking care of cleanup * Redefine the Runtime protocol to serve as an interface for evaluation * Cleanup operations * Use reference for communication with a standalone node * Use shortnames for distribution by default * Update node configuration and make sure epmd is running * Rename Remote to ErlDist
35 lines
795 B
Elixir
35 lines
795 B
Elixir
defmodule LiveBook.Utils do
|
|
@moduledoc false
|
|
|
|
@type id :: binary()
|
|
|
|
@doc """
|
|
Generates a random binary id.
|
|
"""
|
|
@spec random_id() :: binary()
|
|
def random_id() do
|
|
:crypto.strong_rand_bytes(20) |> Base.encode32(case: :lower)
|
|
end
|
|
|
|
@doc """
|
|
Generates a random short binary id.
|
|
"""
|
|
@spec random_short_id() :: binary()
|
|
def random_short_id() do
|
|
:crypto.strong_rand_bytes(5) |> Base.encode32(case: :lower)
|
|
end
|
|
|
|
@doc """
|
|
Converts the given name to node identifier.
|
|
"""
|
|
@spec node_from_name(String.t()) :: atom()
|
|
def node_from_name(name) do
|
|
if name =~ "@" do
|
|
String.to_atom(name)
|
|
else
|
|
# Default to the same host as the current node
|
|
[_, host] = node() |> Atom.to_string() |> String.split("@")
|
|
:"#{name}@#{host}"
|
|
end
|
|
end
|
|
end
|