コード例 #1
0
        public void InitializeCluster()
        {
            //Create fragment clusterFile for cluster
            NumberClusterUse = (int)Math.Ceiling((decimal)Size / Settings.Settings.ClusterSize);
            if (NumberClusterUse <= 0)
            {
                return;
            }
            var fragmentFileSize = Size;

            if (NumberClusterUse > 1)
            {
                fragmentFileSize = Settings.Settings.ClusterSize;
            }
            var totalFileSize = Size;

            for (var i = 1; i <= NumberClusterUse; i++)
            {
                var fragmentFile = new FragmentClusterFile
                {
                    Name = Name + $"_{i}",
                    Size = fragmentFileSize
                };
                FragmentFiles.Add(fragmentFile);
                totalFileSize -= Settings.Settings.ClusterSize;
                if (totalFileSize < Settings.Settings.ClusterSize)
                {
                    fragmentFileSize = totalFileSize;
                }
            }
        }
コード例 #2
0
        public void IncreaseSizeFile(int _oldSize)
        {
            //New number cluster
            var nCluster      = (int)Math.Ceiling((decimal)Size / Settings.Settings.ClusterSize);
            var remainingSize = Size - _oldSize;

            var color = FragmentFiles.First().Color;

            //Change size last cluster
            var lastFragmentFile = FragmentFiles.Last();

            remainingSize        -= (Settings.Settings.ClusterSize - lastFragmentFile.Size);
            lastFragmentFile.Size = Settings.Settings.ClusterSize;

            //Calculate size of fragmentfile
            var calcSize = remainingSize;

            if (calcSize > Settings.Settings.ClusterSize)
            {
                calcSize = Settings.Settings.ClusterSize;
            }

            for (var i = NumberClusterUse + 1; i <= nCluster; i++)
            {
                FragmentFiles.Add(new FragmentClusterFile
                {
                    Name  = Name + $"_{i}",
                    Size  = calcSize,
                    Color = color
                });
                remainingSize -= Settings.Settings.ClusterSize;
                if (remainingSize < Settings.Settings.ClusterSize)
                {
                    calcSize = remainingSize;
                }
            }
            //Update NumberClusterUse
            NumberClusterUse = nCluster;
        }
コード例 #3
0
        public void DecreseSizeFile(int _oldSize)
        {
            //New number cluster
            var nCluster = (int)Math.Ceiling((decimal)Size / Settings.Settings.ClusterSize);

            //Remove fragmentfile
            for (var i = nCluster; i < NumberClusterUse; i++)
            {
                if (FragmentFiles.Count > 0)
                {
                    FragmentFiles.RemoveAt(FragmentFiles.Count - 1);
                }
            }
            if (FragmentFiles.Count > 0)
            {
                //Update last fragment size and nextcluster
                var lastFragmentFile = FragmentFiles.Last();
                lastFragmentFile.Size        = Size - ((nCluster - 1) * Settings.Settings.ClusterSize);
                lastFragmentFile.NextCluster = null;
            }
            //Update NumberClusterUse
            NumberClusterUse = nCluster;
        }