ANH_WCF_Service.CentralServerMonitor.AddServer C# (CSharp) Method

AddServer() public method

public AddServer ( Server s ) : String
s Server
return String
        public String AddServer(Server s)
        {
            if (s.type == ServerType.None)
                return "StartServer Called however Server Type is None. Aborting";

            //see if we dont already have an existing server
            Server e = FindServer(s.type, s.args);
            if (e == null) //if we don't set e as the newly created server (otherwise we use the old one and discard the new one)
            {
                e = s;
                ServerList.Add(e);
            }

            //if our server is running
            if (e.IsRunning)
            {
                return "Server: "+e.type + " args: "+e.args+" is already running";
            }

            //setup the events
            e.Process.Cancelled += new EventHandler(pc_Cancelled);
            e.Process.Completed += new EventHandler(pc_Completed);
            e.Process.Failed += new System.Threading.ThreadExceptionEventHandler(pc_Failed);
            e.Process.StdErrReceived += new DataReceivedHandler(pc_StdErrReceived);
            e.Process.StdOutReceived += new DataReceivedHandler(pc_StdOutReceived);

            //set the timers/flags and run
            e.StartedTime = DateTime.Now.Ticks;
            e.IsRunning = true;
            e.IsCrashed = false;
            e.Process.Start();

            //send the started message
            return "Started Server. Type: " + e.type.ToString() + " Args: " + e.args;
        }

Usage Example

        public String StartServer(ServerType type, String args)
        {
            if (!Authenticated)
            {
                return("You must be Authenticated to perform this task");
            }

            if (GetServerExists(type, args))
            {
                return("Server: " + type + " args:" + args + " process is already running. Please kill it before trying to run a new instance");
            }

            ProcessCaller pc = new ProcessCaller(monitor);

            pc.Arguments        = args;
            pc.WorkingDirectory = monitor.GetWorkingDirectory() + "\\";

            switch (type)
            {
            case ServerType.None:
                return("Server Type: None is not a valid type to start");

            case ServerType.ConnectionServer:
                pc.FileName = monitor.GetWorkingDirectory() + "connectionserver.exe";
                break;

            case ServerType.ChatServer:
                pc.FileName = monitor.GetWorkingDirectory() + "chatserver.exe";
                break;

            case ServerType.LoginServer:
                pc.FileName = monitor.GetWorkingDirectory() + "loginserver.exe";
                break;

            case ServerType.ZoneServer:
                pc.FileName = monitor.GetWorkingDirectory() + "zoneserver.exe";
                break;

            case ServerType.PingServer:
                pc.FileName = monitor.GetWorkingDirectory() + "pingserver.exe";
                break;

            default:
                return("Hey man some weird ass shit just happened. An enum wasn't handled properly");
            }


            Server s = new Server(pc);

            s.args = args;
            s.type = type;

            return(monitor.AddServer(s));
        }