class Options::ReceiverOptionParser

Option parser of basic (see Options::BasicOptionParser), common (see Options::SRCommonOptionParser) and specific options for receiver client

Specific receiver options

count

number of messages to receiver (default: DEFAULT_COUNT, see Defaults)

process-reply-to

send message to reply-to address if enabled and message got reply-to address

recv-browse

browse messages instead of reading (default: DEFAULT_BROWSE, see Defaults)

Public Class Methods

new(args) click to toggle source

Initialization and parsing of basic, common and specific receiver options

Parameters

args

arguments to parse

Calls superclass method Options::SRCommonOptionParser::new
# File lib/options/receiver_option_parser.rb, line 39
def initialize(args)
  # Initialization of basic and common options
  super()
  # Receiver usage
  @opt_parser.banner = "Usage: <receiver_program> [OPTIONS]"

  # Receiver specific options with default values

  # Number of messages option
  @options.count = Defaults::DEFAULT_COUNT
  # Credit for messages to be pre-fetched
  @options.prefetch = Defaults::DEFAULT_PREFETCH
  # Process reply to
  @options.process_reply_to = Defaults::DEFAULT_PROC_REPLY_TO
  # Browse messages
  @options.browse = Defaults::DEFAULT_BROWSE
  # Filter using selector
  @options.selector = Defaults::DEFAULT_SELECTOR
  # Receiver listen
  @options.recv_listen = Defaults::DEFAULT_RECV_LISTEN
  # Receiver listen port
  @options.recv_listen_port = Defaults::DEFAULT_RECV_LISTEN_PORT

  # Number of messages
  @opt_parser.on(
    "-c",
    "--count COUNT",
    Integer,
    "number of messages to receiver "+
    "(default: #{Defaults::DEFAULT_COUNT})"
  ) do |count|
    @options.count = count
  end

  # Prefetch
  @opt_parser.on(
    "--reactor-prefetch PREFETCH",
    Integer,
    "receiver's prefetch count "+
    "(default: #{Defaults::DEFAULT_PREFETCH})"
  ) do |prefetch|
    @options.prefetch = prefetch
  end

  # Process reply to
  @opt_parser.on(
    "--process-reply-to",
    "send message to reply-to address if enable and message got reply-to "+
    "address",
  ) do |process_reply_to|
    @options.process_reply_to = process_reply_to
  end

  # Browse messages
  @opt_parser.on(
    "--recv-browse",
    "browse messages instead of reading",
  ) do |browse|
    @options.browse = browse
  end

  # Filter messages
  @opt_parser.on(
    "--recv-selector SELECTOR",
    "filter messages using a selector"
  ) do |selector|
    @options.selector = selector
  end

  # Receiver listen
  @opt_parser.on(
    "--recv-listen LISTEN",
    Options::BOOLEAN_STRINGS,
    "enable receiver listen (P2P) (#{Options::BOOLEAN_STRINGS.join("/")}, "+
    "default: #{Defaults::DEFAULT_RECV_LISTEN})"
  ) do |recv_listen|
    @options.recv_listen = StringUtils.str_to_bool(recv_listen)
  end

  # Receiver listen port
  @opt_parser.on(
    "--recv-listen-port PORT",
    Integer,
    "define port for local listening "+
    "(range: #{Constants::CONST_MIN_PORT_RANGE_VALUE}-"+
    "#{Constants::CONST_MAX_PORT_RANGE_VALUE}, "+
    "default: #{Defaults::DEFAULT_RECV_LISTEN_PORT})"
  ) do |recv_listen_port|
    if recv_listen_port < Constants::CONST_MIN_PORT_RANGE_VALUE \
      or recv_listen_port > Constants::CONST_MAX_PORT_RANGE_VALUE
      raise OptionParser::InvalidArgument, "#{recv_listen_port} "+
        "(out of range: #{Constants::CONST_MIN_PORT_RANGE_VALUE}-"+
        "#{Constants::CONST_MAX_PORT_RANGE_VALUE})"
    end
    @options.recv_listen_port = recv_listen_port
  end

  # Duration mode
  @options.duration_mode = "before-receive"
  duration_modes = %w(before-receive after-receive after-receive-action after-receive-tx-action)
  @opt_parser.on(
    "--duration-mode MODE", duration_modes,
    "in use with --duration defines where to wait (allowed: #{duration_modes.join(', ')}, default: #{@options.duration_mode})"
  ) do |d|
    @options.duration_mode = d
  end

  # Parse basic, common and specific options for receiver client
  parse(args)
end