public static bool ConnectFile(string nativeSystemId, ResourcePath nativeResourcePath, out IResourceAccessor result)
 {
   IRemoteResourceInformationService rris = ServiceRegistration.Get<IRemoteResourceInformationService>();
   result = null;
   bool isFileSystemResource;
   bool isFile;
   string resourcePathName;
   string resourceName;
   DateTime lastChanged;
   long size;
   if (!rris.GetResourceInformation(nativeSystemId, nativeResourcePath,
       out isFileSystemResource, out isFile, out resourcePathName, out resourceName, out lastChanged, out size) ||
           !isFile)
     return false;
   result = new RemoteFileResourceAccessor(nativeSystemId, nativeResourcePath, resourcePathName, resourceName, lastChanged, size);
   return true;
 }
        public static bool ConnectFile(string nativeSystemId, ResourcePath nativeResourcePath, out IResourceAccessor result)
        {
            IRemoteResourceInformationService rris = ServiceRegistration.Get <IRemoteResourceInformationService>();

            result = null;
            bool     isFileSystemResource;
            bool     isFile;
            string   resourcePathName;
            string   resourceName;
            DateTime lastChanged;
            long     size;

            if (!rris.GetResourceInformation(nativeSystemId, nativeResourcePath,
                                             out isFileSystemResource, out isFile, out resourcePathName, out resourceName, out lastChanged, out size) ||
                !isFile)
            {
                return(false);
            }
            result = new RemoteFileResourceAccessor(nativeSystemId, nativeResourcePath, resourcePathName, resourceName, lastChanged, size);
            return(true);
        }
Exemple #3
0
        public bool TryCreateResourceAccessor(string path, out IResourceAccessor result)
        {
            string       nativeSystemId;
            ResourcePath nativeResourcePath;

            if (!TryExtractSystemAndPath(path, out nativeSystemId, out nativeResourcePath))
            {
                throw new InvalidDataException("Path '{0}' is not a valid path for remote resource provider", path);
            }
            ISystemResolver systemResolver = ServiceRegistration.Get <ISystemResolver>();
            SystemName      nativeSystem   = systemResolver.GetSystemNameForSystemId(nativeSystemId);

            if (nativeSystem == null)
            {
                throw new IllegalCallException("Cannot create resource accessor for resource location '{0}' at system '{1}': System is not available", nativeResourcePath, nativeSystemId);
            }
            // Try to access resource locally. This might work if we have the correct resource providers installed.
            if (nativeSystem.IsLocalSystem() && nativeResourcePath.IsValidLocalPath && nativeResourcePath.TryCreateLocalResourceAccessor(out result))
            {
                return(true);
            }
            IFileSystemResourceAccessor fsra;

            if (RemoteFileSystemResourceAccessor.ConnectFileSystem(nativeSystemId, nativeResourcePath, out fsra))
            {
                result = fsra;
                return(true);
            }
            IResourceAccessor ra;

            if (RemoteFileResourceAccessor.ConnectFile(nativeSystemId, nativeResourcePath, out ra))
            {
                result = ra;
                return(true);
            }
            result = null;
            return(false);
        }