private static int Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) => { var exc = eventArgs.ExceptionObject as Exception; if (exc != null) Log.FatalException(exc, "Global Unhandled Exception occurred within {0}.", sender); else Log.Fatal("Global Unhandled Exception ({0}) occurred within {1}.", eventArgs.ExceptionObject, sender); }; try { Console.Title = string.Format("EventStore - CLIENT - {0}", DateTime.UtcNow); var options = new ClientOptions(); if (!CommandLineParser.Default.ParseArguments(args, options)) { Console.WriteLine("Error parsing arguments. Exiting..."); return -1; } var logsDir = !string.IsNullOrEmpty(options.LogsDir) ? options.LogsDir : Helper.GetDefaultLogsDir(); LogManager.Init("client", logsDir); IPAddress ipAddr; if (!IPAddress.TryParse(options.Ip, out ipAddr)) { Log.Error("Wrong IP address provided: {0}.", ipAddr); return -1; } var systemInfo = String.Format("{0} {1}", OS.IsLinux ? "Linux" : "Windows", Runtime.IsMono ? "MONO" : ".NET"); var startInfo = String.Join(Environment.NewLine, options.GetLoadedOptionsPairs().Select(pair => String.Format("{0} : {1}", pair.Key, pair.Value))); var logsDirectory = String.Format("LOGS DIRECTORY : {0}", LogManager.LogsDirectory); Log.Info(String.Format("{0}{1}{2}{1}{3}", logsDirectory, Environment.NewLine, systemInfo, startInfo)); var client = new Client(options); var exitCode = client.Run(); Log.Info("Exit code: {0}.", exitCode); return exitCode; } catch(Exception exc) { Log.ErrorException(exc, "Exception during execution of client."); return -1; } finally { // VERY IMPORTANT TO PREVENT DEADLOCKING ON MONO LogManager.Finish(); } }
public Client(ClientOptions options) { Options = options; TcpEndpoint = new IPEndPoint(options.Ip, options.TcpPort); HttpEndpoint = new IPEndPoint(options.Ip, options.HttpPort); InteractiveMode = options.Command.IsEmpty(); RegisterProcessors(); }
public Client(ClientOptions options) { Options = options; var ipAddr = IPAddress.Parse(options.Ip); TcpEndpoint = new IPEndPoint(ipAddr, options.TcpPort); HttpEndpoint = new IPEndPoint(ipAddr, options.HttpPort); _interactiveMode = options.Command.IsEmpty(); RegisterProcessors(); }