Value Pass Example

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"
}