// // Copyright (c) ZeroC, Inc. All rights reserved. // using System; using System.Collections.Generic; namespace IceBox { public class Server { private static void usage() { Console.Error.WriteLine("Usage: iceboxnet [options] --Ice.Config=\n"); Console.Error.WriteLine( "Options:\n" + "-h, --help Show this message.\n" + "-v, --version Display the Ice version." ); } private static int run(Ice.Communicator communicator, string[] args) { const string prefix = "IceBox.Service."; Ice.Properties properties = communicator.getProperties(); Dictionary services = properties.getPropertiesForPrefix(prefix); var argSeq = new List(args); foreach(KeyValuePair pair in services) { string name = pair.Key.Substring(prefix.Length); argSeq.RemoveAll(v => v.StartsWith("--" + name)); } foreach(string arg in args) { if(arg.Equals("-h") || arg.Equals("--help")) { usage(); return 0; } else if(arg.Equals("-v") || arg.Equals("--version")) { Console.Out.WriteLine(Ice.Util.stringVersion()); return 0; } else { Console.Error.WriteLine("IceBox.Server: unknown option `" + arg + "'"); usage(); return 1; } } ServiceManagerI serviceManagerImpl = new ServiceManagerI(communicator, args); return serviceManagerImpl.run(); } public static int Main(string[] args) { int status = 0; Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = Ice.Util.createProperties(); initData.properties.setProperty("Ice.Admin.DelayCreation", "1"); try { using(var communicator = Ice.Util.initialize(ref args, initData)) { Console.CancelKeyPress += (sender, eventArgs) => { eventArgs.Cancel = true; communicator.shutdown(); }; status = run(communicator, args); } } catch(Exception ex) { Console.Error.WriteLine(ex); status = 1; } return status; } } }