Ejemplo n.º 1
0
        public override string Invoke(string args, int maxResultSize)
        {
            lock (this)
            {
                // Vorab Prüfungen
                if (string.IsNullOrWhiteSpace(args))
                {
                    return("ERROR_ARGS_NULL");
                }
#if (DEBUG)
                Arma2Net.Utils.Log(args);
#endif

                // Argumente zerlegen
                string[] split;
                try
                {
                    split = args.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                }
                catch (Exception ex)
                {
                    Arma2Net.Utils.Log("Exception: " + ex.Message);
                    return("ERROR_SPLIT_EXCEPTION");
                }

                // Zerlegte Argumente prüfen
                if (split == null)
                {
                    return("ERROR_SPLIT_NULL");
                }
                if (split.Length < 1)
                {
                    return("ERROR_SPLIT_LENGTH");
                }

                // Die einzelnen Befehlsgruppen verarbeiten
                if (split[0].ToLower() == "town")
                {
                    return(_TownXml.ArgumentParser(split));
                }
                else if (split[0].ToLower() == "vehicle")
                {
                    return(_VehicleXml.ArgumentParser(split));
                }
                else if (split[0].ToLower() == "isok")
                {
                    if (split.Length < 2)
                    {
                        return("ERROR");
                    }

                    return(split[1].StartsWith("ERROR") ? "ERROR" : "OK");
                }
                else if (split[0].ToLower() == "reloadall")
                {
                    try
                    {
                        _TownXml = XmlTools.Load <TownXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Towns.xml"));
#if (DEBUG)
                        _TownXml.Debug();
#endif

                        _VehicleXml = XmlTools.Load <VehicleXml>(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Vehicle.xml"));
                        return("OK");
                    }
                    catch (Exception ex)
                    {
                        return("ERROR_RELOADALL_EXCEPTION:" + ex.Message);
                    }
                }
                else
                {
                    return("ERROR_INVALID_COMMAND");
                }
            }
        }