value_writer_document()
{
process_description "Takes two numbers and produce their sum as output."
}
value_writer_explain_cmdline_opts()
{
# -num-a option
local description="First number to be summed"
explain_cmdline_req_opt "-num-a" "<int>" "$description"
# -num-b option
local description="Second number to be summed"
explain_cmdline_req_opt "-num-b" "<int>" "$description"
}
value_writer_define_opts()
{
# Initialize variables
local cmdline=$1
local process_spec=$2
local process_name=$3
local process_outdir=$4
local optlist=""
# -num-a option
define_cmdline_opt "$cmdline" "-num-a" optlist || return 1
# -num-b option
define_cmdline_opt "$cmdline" "-num-b" optlist || return 1
# Define value descriptor option
define_value_desc_opt "-outv" optlist || return 1
# Save option list
save_opt_list optlist
}
value_writer()
{
# Initialize variables
local num_a=$(read_opt_value_from_func_args "-num-a" "$@")
local num_b=$(read_opt_value_from_func_args "-num-b" "$@")
local outv=$(read_opt_value_from_func_args "-outv" "$@")
# Calculate the sum
local sum=$((num_a + num_b))
# Write value to descriptor
write_value_to_desc "${sum}" "${outv}"
}
value_reader_document()
{
process_description "Gets a value produced by another process, increases it in one unit and writes it in own directory."
}
value_reader_explain_cmdline_opts()
{
:
}
value_reader_define_opts()
{
# Initialize variables
local cmdline=$1
local process_spec=$2
local process_name=$3
local process_outdir=$4
local optlist=""
# Define value descriptor option related to output value of
# value_writer
define_opt_from_proc_out "-value" "value_writer" "-outv" optlist || return 1
# Define output file option
local outf="${process_outdir}/${process_name}.out"
define_opt "-outf" "${outf}" optlist || return 1
# Save option list
save_opt_list optlist
}
value_reader()
{
# Initialize variables
local value=$(read_opt_value_from_func_args "-value" "$@")
local outf=$(read_opt_value_from_func_args "-outf" "$@")
# Increment value by 1
((value++))
# Write value to file
echo "$value" > "${outf}"
}
debasher_value_pass_example_program()
{
add_debasher_process "value_writer" "cpus=1 mem=32 time=00:01:00"
add_debasher_process "value_reader" "cpus=1 mem=32 time=00:01:00"
}