LiveDebugger.Services.LiveViewDiscoveryService (LiveDebugger v0.1.4)

View Source

This module provides functions that discovers LiveView processes in the debugged application.

Summary

Functions

Returns all children LvProcesses of the given pid.

Returns all debugged LvProcesses.

Returns all LiveDebugger's LvProcesses.

Groups LvProcesses by transport_pid and root_pid. To see map structure see examples.

Returns LvProcess associated the given socket_id and transport_pid. When only socket_id is provided, LvProcess with the given socket_id is returned. When more than one process is found, nil is returned.

Returns all LiveView processes.

Finds potential successor LvProcess based on module when websocket connection breaks and new one is created. This is a common scenario when user recompiles code or refreshes the page

Functions

children_lv_processes(pid, searched_lv_processes \\ nil)

@spec children_lv_processes(
  pid :: pid(),
  searched_lv_processes :: [LiveDebugger.Structs.LvProcess.t()] | nil
) :: [LiveDebugger.Structs.LvProcess.t()]

Returns all children LvProcesses of the given pid.

debugged_lv_processes()

@spec debugged_lv_processes() :: [LiveDebugger.Structs.LvProcess.t()]

Returns all debugged LvProcesses.

debugger_lv_processes()

@spec debugger_lv_processes() :: [LiveDebugger.Structs.LvProcess.t()]

Returns all LiveDebugger's LvProcesses.

group_lv_processes(lv_processes)

@spec group_lv_processes(lv_processes :: [LiveDebugger.Structs.LvProcess.t()]) :: %{
  required(pid()) => %{
    required(LiveDebugger.Structs.LvProcess.t()) => [
      LiveDebugger.Structs.LvProcess.t()
    ]
  }
}

Groups LvProcesses by transport_pid and root_pid. To see map structure see examples.

Examples

iex> lv_processes = LiveDebugger.Services.LiveViewDiscoveryService.debugged_lv_processes()
iex> LiveDebugger.Services.LiveViewDiscoveryService.group_lv_processes(lv_processes)
%{
  #<0.123.0> => {
    %LiveDebugger.Structs.LvProcess{pid: #<0.223.0>} => [
      %LiveDebugger.Structs.LvProcess{root_pid: #<0.223.0>},
      %LiveDebugger.Structs.LvProcess{root_pid: #<0.223.0>}
    ],
  #<0.124.0> => [
    %LiveDebugger.Structs.LvProcess{pid: #<0.224.0>} => [
      %LiveDebugger.Structs.LvProcess{root_pid: #<0.224.0>},
      %LiveDebugger.Structs.LvProcess{root_pid: #<0.224.0>}
    ]
  }
}

lv_process(socket_id, transport_pid \\ nil)

@spec lv_process(socket_id :: String.t(), transport_pid :: pid() | nil) ::
  LiveDebugger.Structs.LvProcess.t() | nil

Returns LvProcess associated the given socket_id and transport_pid. When only socket_id is provided, LvProcess with the given socket_id is returned. When more than one process is found, nil is returned.

lv_processes()

@spec lv_processes() :: [LiveDebugger.Structs.LvProcess.t()]

Returns all LiveView processes.

successor_lv_processes(module)

@spec successor_lv_processes(module :: module()) :: [
  LiveDebugger.Structs.LvProcess.t()
]

Finds potential successor LvProcess based on module when websocket connection breaks and new one is created. This is a common scenario when user recompiles code or refreshes the page