public Msg1RecoveryExample()
 {
     d_port        = 8194;
     d_hosts       = new ArrayList();
     d_startType   = SERIAL;
     d_startSerial = 0;
     d_endType     = TIME;
     d_endTime     = new Datetime(DateTime.Now);
     d_filter      = FilterChoiceType.LAST_UPDATE_ONLY;
     d_eid         = 0;
     d_eidProvided = false;
     d_requestType = STATUS_INFO;
     d_authOption  = "LOGON";
     d_dsName      = "";
     d_name        = "";
 }
        private bool parseCommandLine(string[] args)
        {
            for (int i = 0; i < args.Length; ++i)
            {
                if (string.Compare(args[i], "-s", true) == 0 &&
                    i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    int    startSerial = 0;
                    string startArg    = args[++i];
                    if (int.TryParse(startArg, out startSerial))
                    {
                        d_startType   = SERIAL;
                        d_startSerial = startSerial;
                    }
                    else
                    {
                        try
                        {
                            d_startTime = new Datetime(Convert.ToDateTime(startArg));
                            d_startType = TIME;
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Error: '{0}' is not in the proper Datetime format.", startArg);
                            printUsage();
                            return(false);
                        }
                    }
                }
                else if (string.Compare(args[i], "-e", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    int    endSerial = 0;
                    string endArg    = args[++i];
                    if (int.TryParse(endArg, out endSerial))
                    {
                        d_endType   = SERIAL;
                        d_endSerial = endSerial;
                    }
                    else
                    {
                        try
                        {
                            d_endTime = new Datetime(Convert.ToDateTime(endArg));
                            d_endType = TIME;
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Error: '{0}' is not in the proper Datetime format.", endArg);
                            printUsage();
                            return(false);
                        }
                    }
                }
                else if (string.Compare(args[i], "-f", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    string filter = args[++i];
                    try
                    {
                        d_filter = (FilterChoiceType)Enum.Parse(d_filter.GetType(), filter, true);
                    }
                    catch (ArgumentException)
                    {
                        Console.WriteLine("Error: '{0}' is not a supported filter type.", filter);
                        printUsage();
                        return(false);
                    }
                }
                else if (string.Compare(args[i], "-eid") == 0 &&
                         i + 1 < args.Length)
                {
                    string eidArg = args[++i];
                    if (int.TryParse(eidArg, out d_eid))
                    {
                        d_eidProvided = true;
                    }
                    else
                    {
                        Console.WriteLine("Error: '{0}' is not an integer", eidArg);
                        printUsage();
                        return(false);
                    }
                }
                else if (string.Compare(args[i], "-ip", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_hosts.Add(args[++i]);
                }
                else if (string.Compare(args[i], "-p", true) == 0 &&
                         i + 1 < args.Length)
                {
                    int outPort = 0;
                    if (int.TryParse(args[++i], out outPort))
                    {
                        d_port = outPort;
                    }
                }
                else if (string.Compare("-auth", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_authOption = args[++i].Trim();
                }
                else if (string.Compare("-ds", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_dsName = args[++i].Trim();
                }
                else if (string.Compare("-n", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_name = args[++i].Trim();
                }
                else if (string.Compare(args[i], "-h", true) == 0)
                {
                    printUsage();
                    return(false);
                }
                else
                {
                    Console.WriteLine("Error: unknown argument '{0}'", args[i]);
                    printUsage();
                    return(false);
                }
            }

            // check for application name
            if ((d_authOption == "APPLICATION" || d_authOption == "USER_APP") && (d_name == ""))
            {
                System.Console.WriteLine("Application name cannot be NULL for application authorization.");
                printUsage();
                return(false);
            }
            if (d_authOption == "USER_DS_APP" && (d_name == "" || d_dsName == ""))
            {
                System.Console.WriteLine("Application or DS name cannot be NULL for application authorization.");
                printUsage();
                return(false);
            }
            // check for Directory Service name
            if ((d_authOption == "DIRSVC") && (d_dsName == ""))
            {
                System.Console.WriteLine("Directory Service property name cannot be NULL for DIRSVC authorization.");
                printUsage();
                return(false);
            }

            // handle default arguments
            if (d_hosts.Count == 0)
            {
                d_hosts.Add("localhost");
            }

            return(true);
        }