Package anbxj

# Class AnBx_CommandLine_Parser<R extends Enum<?>,C extends Enum<?>>

java.lang.Object
anbxj.AnBx_CommandLine_Parser<R,C>

Type Parameters:
  `R` - The type of role enumeration.
  `C` - The type of channels enumerators.

public abstract class AnBx_CommandLine_Parser<R extends Enum<?>,C extends Enum<?>> extends Object
An abstract class for parsing command line arguments.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static Properties`
  `configFile`
  Configuration file, set via command line parameters.
  `protected static Crypto_Config`
  `crypto_config`
  Configuration for cryptography, set via command line parameters.
  `protected static Channel_SSLChannelType`
  `ct`
  Default SSL channel type, overridden by command line parameters.
  `protected static String`
  `keypath`
  Path to the key file, set via command line parameters.
  `protected AnBx_Layers`
  `layer`
  The layer for the application.
  `protected static String`
  `myAlias`
  Alias for identification, set via command line parameters.
  `protected static String`
  `protname`
  Name of the protocol, set via command line parameters.
  `protected R`
  `role`
  Role enumeration, set via command line parameters.
  `protected static long`
  `sessions`
  Number of sessions for the protocol run, set via command line parameters.
  `protected static String`
  `sharepath`
  Path to the shared resources, set via command line parameters.
  `protected static boolean`
  `vflag`
  Verbose flag, set via command line parameters.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AnBx_CommandLine_Parser(String[] args, String prot, String configName, Class<R> roles, boolean vflag)`
  Create a AnBx_CommandLine_Parser
  `AnBx_CommandLine_Parser(String[] args, String prot, String configName, Class<R> roles, boolean vflag, boolean parseFullArgs)`
  Create a AnBx_CommandLine_Parser

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Properties`
  `getConfigFile()`
  Loads the properties from the config file
  `String`
  `getRole()`
  Get the role name
  `protected R`
  `getRoleShare(Class<R> roles)`
  Gets the role used to share information during the protocol setup
  `protected abstract void`
  `initProtocol()`
  Initialise the protocol
  `protected void`
  `initRole(Channel_SSLChannelType ct, R role, Map<String,Channel_Settings> cs, Map<String,String> aliases, Class<R> roles, Class<C> channels)`
  Initialise the role
  `protected boolean`
  `isFirstRole(C channel, R role)`
  Get the sender role in a channel
  `protected void`
  `readConfigFile(Map<String,String> aliases, Class<R> roles, R role)`
  Reads the properties from the config file
  `protected void`
  `setLayer(AnBx_Layers layer)`
  Set the debug level
  `protected static void`
  `terminate(String msg)`
  Terminates the protocol after an error occurs and prints a message
  `protected static void`
  `terminate(String msg, String[] args)`
  Terminates the protocol after an error occurs and prints a message along with the arguments passed.
  `static String`
  `usage()`
  Computes the usage string for the given protocol

  ### Methods inherited from class java.lang.Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### ct

    protected static Channel_SSLChannelType ct
    Default SSL channel type, overridden by command line parameters.

  - ### layer

    protected AnBx_Layers layer
    The layer for the application.

  - ### keypath

    protected static String keypath
    Path to the key file, set via command line parameters.

  - ### sharepath

    protected static String sharepath
    Path to the shared resources, set via command line parameters.

  - ### myAlias

    protected static String myAlias
    Alias for identification, set via command line parameters.

  - ### crypto_config

    protected static Crypto_Config crypto_config
    Configuration for cryptography, set via command line parameters.

  - ### role

    protected R extends Enum<?> role
    Role enumeration, set via command line parameters.

  - ### configFile

    protected static Properties configFile
    Configuration file, set via command line parameters.

  - ### protname

    protected static String protname
    Name of the protocol, set via command line parameters.

  - ### sessions

    protected static long sessions
    Number of sessions for the protocol run, set via command line parameters.

  - ### vflag

    protected static boolean vflag
    Verbose flag, set via command line parameters.

- ## Constructor Details

  - ### AnBx_CommandLine_Parser

    public AnBx_CommandLine_Parser(String[] args, String prot, String configName, Class<R> roles, boolean vflag)
    Create a AnBx_CommandLine_Parser
    Parameters:
      `args` - the command line arguments
      `prot` - the protocol name
      `configName` - the name of the config file
      `roles` - the protocol roles enumerator
      `vflag` - true = verbose mode, false = silent mode

  - ### AnBx_CommandLine_Parser

    public AnBx_CommandLine_Parser(String[] args, String prot, String configName, Class<R> roles, boolean vflag, boolean parseFullArgs)
    Create a AnBx_CommandLine_Parser
    Parameters:
      `args` - the command line arguments
      `prot` - the protocol name
      `configName` - the name of the config file
      `roles` - the protocol roles enumerator
      `vflag` - true = verbose mode, false = silent mode
      `parseFullArgs` - true = parsing a standard application (all arguments accepted), false = parsing a setup application (fewer arguments accepted)

- ## Method Details

  - ### setLayer

    protected void setLayer(AnBx_Layers layer)
    Set the debug level
    Parameters:
      `layer` - the debugging layer
    See Also:
      - `AnBx_Layers`

  - ### usage

    public static String usage()
    Computes the usage string for the given protocol
    Returns:
      the usage string

  - ### initProtocol

    protected abstract void initProtocol()
    Initialise the protocol

  - ### terminate

    protected static void terminate(String msg)
    Terminates the protocol after an error occurs and prints a message
    Parameters:
      `msg` - the error message to be printed

  - ### terminate

    protected static void terminate(String msg, String[] args)
    Terminates the protocol after an error occurs and prints a message along with the arguments passed.
    Parameters:
      `msg` - The error message to be printed.
      `args` - The array of arguments to be included in the error message.

  - ### getRole

    public String getRole()
    Get the role name
    Returns:
      the role name

  - ### isFirstRole

    protected boolean isFirstRole(C channel, R role)
    Get the sender role in a channel
    Parameters:
      `channel` - the specified channel
      `role` - the specified role
    Returns:
      true if R is the first role in channel C

  - ### getRoleShare

    protected R getRoleShare(Class<R> roles)
    Gets the role used to share information during the protocol setup
    Parameters:
      `roles` - the protocol roles enumerator
    Returns:
      the role used to share information prior protocol run

  - ### getConfigFile

    protected Properties getConfigFile()
    Loads the properties from the config file
    Returns:
      the properties object read from the config file

  - ### readConfigFile

    protected void readConfigFile(Map<String,String> aliases, Class<R> roles, R role)
    Reads the properties from the config file
    Parameters:
      `aliases` - mapping channel names to channel settings
      `roles` - the protocol roles enumerator
      `role` - the protocol role

  - ### initRole

    protected void initRole(Channel_SSLChannelType ct, R role, Map<String,Channel_Settings> cs, Map<String,String> aliases, Class<R> roles, Class<C> channels)
    Initialise the role
    Parameters:
      `ct` - the channel type
      `role` - the protocol role
      `cs` - mapping channel names to channel settings
      `aliases` - mapping role names with aliases (identifies)
      `roles` - the protocol roles enumerator
      `channels` - the protocol channels enumerator