Example #1
0
        private void FillHeader(int iID)
        {
            Database.DriveInfo di = Database.DatabaseManager.Get(iID);

            txtDrive.Text         = di.Drive;
            numTimeInterval.Value = di.TimeInterval;
            chkEnabled.Checked    = di.Status == 1;
            ComboBoxTools.SelectItemValue(cboOperation, di.Operation);
            ComboBoxTools.SelectItemValue(cboTimeUnit, di.TimeUnit);
        }
Example #2
0
        void timer_Tick(object sender, EventArgs e)
        {
            if (sender != null && sender is Timer)
            {
                Timer timer = sender as Timer;

                if (timer.Tag != null && timer.Tag is Database.DriveInfo)
                {
                    Database.DriveInfo driveInfo = timer.Tag as Database.DriveInfo;

                    ManageDriveOperation(driveInfo);
                }
            }
        }
Example #3
0
        private void ManageDriveOperation(Database.DriveInfo driveInfo)
        {
            if (_resumedFromSleep != null)
            {
                if ((DateTime.Now - _resumedFromSleep.Value).TotalSeconds > 15)
                {
                    _resumedFromSleep = null;
                }
                else
                {
                    return;
                }
            }

            string volumeName        = string.Empty;
            bool   ignoreVolumeNames = ApplicationConfiguration.IgnoreVolumeNames;

            try
            {
                if (!ignoreVolumeNames)
                {
                    volumeName = (new System.IO.DriveInfo(Path.GetPathRoot(driveInfo.Drive))).VolumeLabel;
                }
            }
            catch (Exception exc)
            {
                LogManager.Write(exc.Message);
            }

            if (Directory.Exists(driveInfo.Drive) && (ignoreVolumeNames == true || (ignoreVolumeNames == false && driveInfo.VolumeNames.Contains(volumeName))))
            {
                try
                {
                    if (driveInfo.Operation == "r")
                    {
                        var fileNames = Directory.GetFiles(driveInfo.Drive, "*.*").Take(5).ToList();

                        if (fileNames != null && fileNames.Count > 0)
                        {
                            // get random file
                            var fileName = fileNames[_random.Next(Math.Max(fileNames.Count - 1, 1))];

                            if (fileName != null)
                            {
                                if (File.Exists(fileName))
                                {
                                    using (var reader = File.OpenRead(fileName))
                                    {
                                        // make sure that file is at least on byte long
                                        if (reader.Length > 1)
                                        {
                                            // read random byte from the file
                                            var maxOffset = reader.Length > int.MaxValue ? int.MaxValue : (int)reader.Length;
                                            var offset    = _random.Next(Math.Max(maxOffset - 1, 1));

                                            //LogManager.Write( "Read one byte at location {0} from file '{1}'", offset, fileName );

                                            reader.Seek(offset, SeekOrigin.Begin);

                                            var data = new byte[1];
                                            reader.Read(data, 0, 1);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var fileName = Path.Combine(Path.GetFullPath(driveInfo.Drive), "KeepAliveHD.txt");

                        using (var writer = new StreamWriter(fileName, false, Encoding.ASCII))
                        {
                            writer.Write("This file was generated by KeepAliveHD application on " + DateTime.Now.ToString());
                        }

                        driveInfo.Connected = true;

                        if (ApplicationConfiguration.DeleteTextFile)
                        {
                            if (File.Exists(fileName))
                            {
                                File.Delete(fileName);
                            }
                        }
                    }
                }
                catch (Exception exc)
                {
                    LogManager.Write(exc.Message);
                }
            }
            else
            {
                driveInfo.Connected = false;
            }
        }