Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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)
                ));
 }