Packages

An example implementation for an Elixir custom runtime on AWS Lambda

Current section

Files

Jump to
aws_lambda_elixir_runtime lib epmd stub_client.ex
Raw

lib/epmd/stub_client.ex

# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
defmodule EPMD.StubClient do
@moduledoc """
This module implements an EPMD client which does not actually coordinate
with the real EPMD or allow the current node to communicate with other
nodes.
"""
@doc """
No need to start a process because the stub client has no state.
"""
def start_link do
:ignore
end
@doc "family is ignored"
def register_node(name, port, _family) do
register_node(name, port)
end
@doc "return :ok and a random number"
def register_node(_name, _port) do
{:ok, :rand.uniform(3)}
end
@doc """
Return a hardcoded port and version.
If other nodes were going to be supported this would need to be changed.
"""
def port_please(_name, _ip) do
port = 4370
version = 5
{:port, port, version}
end
@doc """
There's no way to get the names of all running nodes because this client
doesn't actually connect to an EPMD instance.
"""
def names(_hostname) do
{:error, :address}
end
end