/// <summary> /// Start the EventStore executable explicit single server options, and then connect /// </summary> /// <param name="config">EsDb Config Section</param> /// <param name="windowStyle">ProcessWindowStyle: How the EventStore executable window will be displayed or hidden.</param> /// <param name="opt">StartConflictOption Enum: What to do if a conflicting EventStore process is already running.</param> public EventStoreConnectionManager SetupEventStore( EsdbConfig config, ProcessWindowStyle windowStyle, StartConflictOption opt) { var fullPath = Path.Combine(config.Path, "EventStore.ClusterNode.exe"); var runningEventStores = Process.GetProcessesByName("EventStore.ClusterNode"); if (runningEventStores.Count() != 0) { switch (opt) { case StartConflictOption.Connect: _process = runningEventStores[0]; break; case StartConflictOption.Kill: foreach (var es in runningEventStores) { es.Kill(); } break; case StartConflictOption.Error: throw new Exception("Conflicting EventStore running."); } } if (_process == null) { _process = new Process { StartInfo = { WindowStyle = windowStyle, UseShellExecute = true, CreateNoWindow = false, WorkingDirectory = config.WorkingDir, FileName = fullPath, Arguments = config.Args, Verb = "runas" } }; _process.Start(); } ESConnection = new EventStoreConnectionManager(config); return(ESConnection); }
/// <summary> /// Start the EventStore executable explicit single server options, and then connect /// </summary> /// <param name="installPath">DirectoryInfo: EventStore executable path</param> /// <param name="args">string: EventStore CLI arguments</param> /// <param name="credentials">UserCredentials: Username-Password pair for authentication and authorization.</param> /// <param name="server">IPAddress: EventStore Server </param> /// <param name="tcpPort">int: Network port used for Tcp communication.</param> /// <param name="windowStyle">ProcessWindowStyle: How the EventStore executable window will be displayed or hidden.</param> /// <param name="opt">StartConflictOption Enum: What to do if a conflicting EventStore process is already running.</param> public void SetupEventStore( DirectoryInfo installPath, string args, UserCredentials credentials, IPAddress server, int tcpPort, ProcessWindowStyle windowStyle, StartConflictOption opt) { Ensure.NotNullOrEmpty(args, "args"); Ensure.NotNull(credentials, "credentials"); var fullPath = Path.Combine(installPath.FullName, "EventStore.ClusterNode.exe"); var runningEventStores = Process.GetProcessesByName("EventStore.ClusterNode"); if (runningEventStores.Count() != 0) { switch (opt) { case StartConflictOption.Connect: _process = runningEventStores[0]; break; case StartConflictOption.Kill: foreach (var es in runningEventStores) { es.Kill(); } break; case StartConflictOption.Error: throw new Exception("Conflicting EventStore running."); } } if (_process == null) { _process = new Process { StartInfo = { WindowStyle = windowStyle, UseShellExecute = true, CreateNoWindow = false, WorkingDirectory = installPath.FullName, FileName = fullPath, Arguments = args, Verb = "runas" } }; _process.Start(); } var sscSettings = StreamStoreConnectionSettings.Create() .SetUserCredentials(credentials) .SetSingleServerIpEndPoint(new IPEndPoint(server, tcpPort)) .SetVerboseLogging(false); var eventStoreConnectionManager = new EventStoreConnectionManager(sscSettings); Connection = eventStoreConnectionManager.Connection; }