Exemplo n.º 1
0
        void SaveToDisk(byte[] fileInBytes, LegacyResource resource)
        {
            var path = Path.Combine(BasePath, resource.RelativePath);
            var dir  = Path.GetDirectoryName(path);

            if (dir != null && !Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            lock ( _fileLock )
            {
                if (!File.Exists(@path))
                {
                    using (var fileToupload = new FileStream(@path, FileMode.OpenOrCreate))
                    {
                        fileToupload.Write(fileInBytes, 0, fileInBytes.Length);
                        fileToupload.Close();
                        fileToupload.Dispose();

                        //File.SetCreationTimeUtc(path, DateTime.Parse(resource.CreationTime));
                        //File.SetLastWriteTimeUtc(path, DateTime.Parse(resource.LastWriteTime));
                        Console.WriteLine("FileStore: Saved file {0} to disk at {1}", resource.Name,
                                          path);
                        Log.Out("FileStore", string.Format("FileStore: Saved file {0} to disk at {1}", resource.Name,
                                                           path), LogCode.Log);
                    }
                }
                else
                {
                    Log.Out("FileStore", string.Format("FileStore: file {0} already in store", resource.Name,
                                                       path), LogCode.Log);
                }
            }
        }
Exemplo n.º 2
0
 public void DownloadFile(LegacyResource resource, string path, FileSource source, string _connectionId = null)
 {
     Rest.DownloadStream(path, _connectionId).ContinueWith(stream =>
     {
         Log.Out("FileStore", string.Format("Finished download for {0}", resource.Name), LogCode.Log);
         AddFile(resource, stream.Result, source);
     });
     Log.Out("FileStore", string.Format("Started download for {0}", resource.Name), LogCode.Log);
 }
Exemplo n.º 3
0
 public void RemoveFile(LegacyResource resource)
 {
     _files.Remove(resource.Id);
     File.Delete(BasePath + resource.RelativePath);
     if (FileRemoved != null)
     {
         FileRemoved(this, new FileEventArgs(resource));
     }
     Log.Out("FileStore", string.Format("FileStore: Removed file {0} from store", resource.Name), LogCode.Log);
 }
Exemplo n.º 4
0
        public byte[] GetBytesFromFile(LegacyResource resource)
        {
            var fi     = new FileInfo(BasePath + resource.RelativePath);
            var buffer = new byte[fi.Length];

            lock (_fileLock)
                using (var fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
                    fs.Read(buffer, 0, (int)fs.Length);

            return(buffer);
        }
Exemplo n.º 5
0
        byte[] GetBytesFromStream(LegacyResource resource, Stream stream)
        {
            var buffer = new byte[resource.Size];
            var ms     = new MemoryStream();
            int bytesRead;

            do
            {
                bytesRead = stream.Read(buffer, 0, buffer.Length);
                ms.Write(buffer, 0, bytesRead);
            } while (bytesRead > 0);
            ms.Close();
            return(buffer);
        }
Exemplo n.º 6
0
 public void Updatefile(LegacyResource resource, byte[] fileInBytes)
 {
     Task.Factory.StartNew(
         delegate
     {
         _files[resource.Id] = resource;
         SaveToDisk(fileInBytes, resource);
         if (FileChanged != null)
         {
             FileChanged(this, new FileEventArgs(resource));
         }
         Log.Out("FileStore", string.Format("FileStore: Updated file {0} in store", resource.Name), LogCode.Log);
     });
 }
Exemplo n.º 7
0
        public void UpdateFile(LegacyResource resource, byte[] fileInBytes, FileSource source)
        {
            SaveToDisk(fileInBytes, resource);
            _files[resource.Id] = resource;

            switch (source)
            {
            case FileSource.ActivityManager:
                if (FileChanged != null)
                {
                    FileChanged(this, new FileEventArgs(resource));
                }
                break;
            }
            Log.Out("FileStore", string.Format("Updated file {0} to store", resource.Name), LogCode.Log);
        }
Exemplo n.º 8
0
 void Check(LegacyResource resource, byte[] fileInBytes)
 {
     if (_files == null)
     {
         throw new Exception("Filestore: Not initialized");
     }
     if (resource == null)
     {
         throw new Exception(("Filestore: Resource not found"));
     }
     if (fileInBytes == null)
     {
         throw new Exception(("Filestore: Bytearray null"));
     }
     if (fileInBytes.Length == 0)
     {
         throw new Exception(("Filestore: Bytearray empty"));
     }
 }
Exemplo n.º 9
0
        public void AddFile(LegacyResource resource, byte[] fileInBytes, FileSource source)
        {
            //Check if we have a valid file
            Check(resource, fileInBytes);

            //See if we have file
            if (_files.ContainsKey(resource.Id))
            {
                if (IsNewer(_files[resource.Id], resource))
                {
                    UpdateFile(resource, fileInBytes, source);
                }
                else
                {
                    return;
                }
            }
            else
            {
                SaveToDisk(fileInBytes, resource);
                _files.Add(resource.Id, resource);
            }

            //Check what the source is and who we should inform
            switch (source)
            {
            case FileSource.ActivityManager:
                if (FileAdded != null)
                {
                    FileAdded(this, new FileEventArgs(resource));
                }
                break;

            case FileSource.ActivityClient:
                if (FileCopied != null)
                {
                    FileCopied(this, new FileEventArgs(resource));
                }
                break;
            }
            Log.Out("FileStore", string.Format("Added file {0} to store", resource.Name), LogCode.Log);
        }
Exemplo n.º 10
0
 public FileEventArgs(LegacyResource resource, string localPath)
 {
     FileResource = resource;
     LocalPath    = localPath;
 }
Exemplo n.º 11
0
 public FileEventArgs(LegacyResource resource)
 {
     FileResource = resource;
 }
Exemplo n.º 12
0
 public DownloadState(LegacyResource resource, FileSource fileSource)
 {
     Resource   = resource;
     FileSource = fileSource;
 }
Exemplo n.º 13
0
 public Stream GetStreamFromFile(LegacyResource resource)
 {
     lock (_fileLock)
         return(new FileStream(BasePath + resource.RelativePath, FileMode.Open, FileAccess.Read, FileShare.Read));
 }
Exemplo n.º 14
0
 public void UpdateFile(LegacyResource resource, Stream stream, FileSource source)
 {
     UpdateFile(resource, GetBytesFromStream(resource, stream), source);
 }
Exemplo n.º 15
0
 bool IsNewer(LegacyResource resourceInFileStore, LegacyResource requestedResource)
 {
     return(false);
 }