WebSocketTransportSettingsElement.cs 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // <copyright>
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. // </copyright>
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System;
  7. using System.ComponentModel;
  8. using System.Configuration;
  9. using System.Runtime;
  10. using System.ServiceModel.Channels;
  11. /// <summary>
  12. /// WebSocketTransportSettingsElement for WebSocketTransportSettings
  13. /// </summary>
  14. public partial class WebSocketTransportSettingsElement : ServiceModelConfigurationElement
  15. {
  16. [ConfigurationProperty(ConfigurationStrings.TransportUsage, DefaultValue = WebSocketDefaults.TransportUsage)]
  17. [ServiceModelEnumValidator(typeof(WebSocketTransportUsageHelper))]
  18. public virtual WebSocketTransportUsage TransportUsage
  19. {
  20. get { return (WebSocketTransportUsage)base[ConfigurationStrings.TransportUsage]; }
  21. set { base[ConfigurationStrings.TransportUsage] = value; }
  22. }
  23. [ConfigurationProperty(ConfigurationStrings.CreateNotificationOnConnection, DefaultValue = WebSocketDefaults.CreateNotificationOnConnection)]
  24. public bool CreateNotificationOnConnection
  25. {
  26. get { return (bool)base[ConfigurationStrings.CreateNotificationOnConnection]; }
  27. set { base[ConfigurationStrings.CreateNotificationOnConnection] = value; }
  28. }
  29. [ConfigurationProperty(ConfigurationStrings.KeepAliveInterval, DefaultValue = WebSocketDefaults.DefaultKeepAliveIntervalString)]
  30. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  31. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanInfinite)]
  32. public TimeSpan KeepAliveInterval
  33. {
  34. get { return (TimeSpan)base[ConfigurationStrings.KeepAliveInterval]; }
  35. set { base[ConfigurationStrings.KeepAliveInterval] = value; }
  36. }
  37. [ConfigurationProperty(ConfigurationStrings.SubProtocol, DefaultValue = null)]
  38. [StringValidator(MinLength = 0)]
  39. public virtual string SubProtocol
  40. {
  41. get { return (string)base[ConfigurationStrings.SubProtocol]; }
  42. set { base[ConfigurationStrings.SubProtocol] = value; }
  43. }
  44. [ConfigurationProperty(ConfigurationStrings.DisablePayloadMasking, DefaultValue = WebSocketDefaults.DisablePayloadMasking)]
  45. public bool DisablePayloadMasking
  46. {
  47. get { return (bool)base[ConfigurationStrings.DisablePayloadMasking]; }
  48. set { base[ConfigurationStrings.DisablePayloadMasking] = value; }
  49. }
  50. [ConfigurationProperty(ConfigurationStrings.MaxPendingConnections, DefaultValue = WebSocketDefaults.DefaultMaxPendingConnections)]
  51. [IntegerValidator(MinValue = 0)]
  52. public int MaxPendingConnections
  53. {
  54. get { return (int)base[ConfigurationStrings.MaxPendingConnections]; }
  55. set { base[ConfigurationStrings.MaxPendingConnections] = value; }
  56. }
  57. public void InitializeFrom(WebSocketTransportSettings settings)
  58. {
  59. if (settings == null)
  60. {
  61. throw FxTrace.Exception.ArgumentNull("settings");
  62. }
  63. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransportUsage, settings.TransportUsage);
  64. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CreateNotificationOnConnection, settings.CreateNotificationOnConnection);
  65. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.KeepAliveInterval, settings.KeepAliveInterval);
  66. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SubProtocol, settings.SubProtocol);
  67. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.DisablePayloadMasking, settings.DisablePayloadMasking);
  68. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxPendingConnections, settings.MaxPendingConnections);
  69. }
  70. public void ApplyConfiguration(WebSocketTransportSettings settings)
  71. {
  72. if (settings == null)
  73. {
  74. throw FxTrace.Exception.ArgumentNull("settings");
  75. }
  76. settings.TransportUsage = this.TransportUsage;
  77. settings.CreateNotificationOnConnection = this.CreateNotificationOnConnection;
  78. settings.KeepAliveInterval = this.KeepAliveInterval;
  79. settings.SubProtocol = string.IsNullOrEmpty(this.SubProtocol) ? null : this.SubProtocol;
  80. settings.DisablePayloadMasking = this.DisablePayloadMasking;
  81. settings.MaxPendingConnections = this.MaxPendingConnections;
  82. }
  83. }
  84. }