Exemple #1
0
        void ListenFilesWrite(FileBuffer files)
        {
            int iterF = 0; long iterB = 0;

            // try
            {
                foreach (var file in files.files)
                {
                    progresser.Update(iterF++, file.name);
                    using (var io = File.Create(file.destination))
                    {
                        //  using (var iob = new BufferedStream(io, 1024 * 128))
                        {
                            long size = 0; long count;
                            while (size < file.size)
                            {
                                // while (ListenBytes.Count == 0 && !ListenBytesDone) { }

                                if (ListenBytes.Count > 0)
                                {
                                    size += count = ListenBytes.Dequeue(io, SafeSubstract(file.size, size));
                                    progresser.Update(iterB += count);
                                }
                            }
                        }
                    }
                    File.SetLastWriteTime(file.destination, file.modified);
                }
            }
            //catch (Exception) { }
            ListenBytesDone = true;
        }
Exemple #2
0
 public void Init(FileBuffer buffer)
 {
     if (!(enabled = buffer.RequireAsyncStatus()))
     {
         return;
     }
     Invoke(new Action(() => Init(buffer.files.Count, buffer.totalSize, "")));
 }
Exemple #3
0
        private void ListenToFiles(NetworkStream stream, FileBuffer files)
        {
            ListenBytes.Clear();
            ListenBytesDone = false;
            ThreadPool.QueueUserWorkItem((x) => ListenFilesWrite(files));

            while (!ListenBytesDone)
            {
                ListenBytes.Enqueue(stream);
            }
        }
Exemple #4
0
 void EmitFilesRead(FileBuffer files)
 {
     try
     {
         foreach (var file in files.files)
         {
             using (var io = File.OpenRead(file.source))
             {
                 var size = 0;
                 while ((size += EmitBytes.Enqueue(io, SafeSubstract(file.size, size))) < file.size)
                 {
                 }
             }
         }
     }
     catch (Exception) { }
     EmitBytesDone = true;
 }
Exemple #5
0
        public static FileBuffer FileDropsToBuffer(string[] paths)
        {
            var policy = Main.Current.config.FileTransfer;

            if (policy == Main.FileTransferFlag.Block | (paths.Length > 1 & policy == Main.FileTransferFlag.Single))
            {
                return(null);
            }

            try
            {
                var files = new FileBuffer();

                for (int i = 0; i < paths.Length; i++)
                {
                    if (File.Exists(paths[i]))
                    {
                        files.Add(new FileInfo(paths[i]));
                    }
                }

                for (int i = 0; i < paths.Length; i++)
                {
                    if (Directory.Exists(paths[i]))
                    {
                        var root = Path.GetDirectoryName(paths[i]);

                        foreach (var filePath in Directory.EnumerateFiles(paths[i], "*", SearchOption.AllDirectories))
                        {
                            files.Add(new FileInfo(filePath), root);
                        }
                    }
                }

                return(files);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemple #6
0
        public static void SetupTemporaryFiles(FileBuffer buffer)
        {
            // Cleanup dirs
            Directory.CreateDirectory(DumpDestination);
            var dir = new DirectoryInfo(DumpDestination);

            foreach (var file in dir.EnumerateFiles())
            {
                file.Delete();
            }
            foreach (var fold in dir.EnumerateDirectories())
            {
                fold.Delete(true);
            }

            // Make empty directories
            foreach (var file in buffer.files)
            {
                Directory.CreateDirectory(Path.GetDirectoryName(file.destination));
            }
        }