12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System.Runtime.InteropServices;
- using System;
- using System.Globalization;
- namespace WinSCP
- {
- [Guid("0ADAAEBC-4A15-4A9C-8ED4-D85F5630035C")]
- [ComVisible(true)]
- public enum TransferResumeSupportState
- {
- Default,
- On,
- Off,
- Smart
- }
- [Guid("6CED4579-0DF2-4E46-93E9-18780546B421")]
- [ClassInterface(Constants.ClassInterface)]
- [ComVisible(true)]
- public sealed class TransferResumeSupport
- {
- public TransferResumeSupportState State { get; set; }
- public int Threshold { get { return GetThreshold(); } set { SetThreshold(value); } }
- public TransferResumeSupport()
- {
- State = TransferResumeSupportState.Default;
- _threshold = 100; // (100 KB)
- }
- public override string ToString()
- {
- string result;
- switch (State)
- {
- case TransferResumeSupportState.Default:
- result = "default";
- break;
- case TransferResumeSupportState.Off:
- result = "off";
- break;
- case TransferResumeSupportState.On:
- result = "on";
- break;
- case TransferResumeSupportState.Smart:
- result = Threshold.ToString(CultureInfo.InvariantCulture);
- break;
- default:
- result = "unknown";
- break;
- }
- return result;
- }
- private int GetThreshold()
- {
- if (State != TransferResumeSupportState.Smart)
- {
- throw new InvalidOperationException("Threshold is undefined when state is not Smart");
- }
- return _threshold;
- }
- private void SetThreshold(int threshold)
- {
- if (_threshold != threshold)
- {
- if (threshold <= 0)
- {
- throw new ArgumentOutOfRangeException(nameof(threshold), "Threshold must be positive");
- }
- State = TransferResumeSupportState.Smart;
- _threshold = threshold;
- }
- }
- private int _threshold;
- }
- }
|