Current section
Files
Jump to
Current section
Files
lib/rclex.ex
defmodule Rclex do
alias Rclex.Nifs
require Logger
@moduledoc """
T.B.A
"""
# ------------------------ユーザAPI群-------------------
@doc """
Rclex初期化
RCLのコンテキストを有効化
"""
def rclexinit do
init_op = Nifs.rcl_get_zero_initialized_init_options()
context = Nifs.rcl_get_zero_initialized_context()
Nifs.rcl_init_options_init(init_op)
Nifs.rcl_init_with_null(init_op, context)
Nifs.rcl_init_options_fini(init_op)
children = [
Rclex.ResourceServer
]
opts = [strategy: :one_for_one, name: :resource_server]
Supervisor.start_link(children, opts)
context
end
@doc """
ユーザのタスク終了入力を受け付けるAPI.
0を入力するとchildに渡されたPIDのタスクを終了する
"""
def waiting_input(sv, child) do
num =
IO.gets("")
|> String.replace("\n", "")
|> String.to_integer()
case num do
0 -> Rclex.Timer.terminate(sv, child)
_ -> waiting_input(sv, child)
end
end
@doc """
Rclexの終了
"""
def shutdown(context) do
Supervisor.stop(:resource_server)
Nifs.rcl_shutdown(context)
end
def get_default_allocator do
Nifs.rcl_get_default_allocator()
end
end