DataActionResult <string> GetFilePath(ExecutableServicesTypes key) { string path; lock (_servicesData) { path = _servicesData[key].FilePathCache; if (path == null || !File.Exists(path)) { DataActionResult <FilePathData[]> pathsSearchResult = SearchBinDirectoryForFilePaths(); if (pathsSearchResult.Status.Failure()) { return(DataActionResult <string> .Failed( pathsSearchResult.Status )); } DataActionResult <string> newServicePathResult = FindServicePath( _servicesData[key].StrSearchKey, pathsSearchResult.Result ); if (newServicePathResult.Status.Failure()) { return(DataActionResult <string> .Failed( newServicePathResult.Status )); } _servicesData[key].FilePathCache = newServicePathResult.Result; path = newServicePathResult.Result; } } return(DataActionResult <string> .Successful(path)); }
public StatusMessage ExecuteService(ExecutableServicesTypes serviceType, IPAddress address) { DataActionResult <string> pathResult = GetFilePath(serviceType); if (pathResult.Status.Failure()) { return(pathResult.Status); } var psi = new ProcessStartInfo( pathResult.Result, address.ToString() ) { UseShellExecute = true, }; try { Process.Start(psi); } catch (Exception) { return(StatusMessage.ExecutableServiceStartError); } return(StatusMessage.Ok); }
async Task <ActionResult> OpenExecutableService( int nodeId, ExecutableServicesTypes serviceType ) { return(await ObserveDataOperationStatusWithIp( nodeId, ip => _execServices.ExecuteService(serviceType, ip) )); }