ApplicationContainerSettings.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // <copyright>
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. // </copyright>
  4. namespace System.ServiceModel.Channels
  5. {
  6. using System.Globalization;
  7. using System.Runtime;
  8. public sealed class ApplicationContainerSettings
  9. {
  10. public const int CurrentSession = ApplicationContainerSettingsDefaults.CurrentSession;
  11. public const int ServiceSession = ApplicationContainerSettingsDefaults.ServiceSession;
  12. const string GroupNameSuffixFormat = ";SessionId={0};PackageFullName={1}";
  13. int sessionId;
  14. internal ApplicationContainerSettings()
  15. {
  16. this.PackageFullName = ApplicationContainerSettingsDefaults.PackageFullNameDefaultString;
  17. this.sessionId = ApplicationContainerSettingsDefaults.CurrentSession;
  18. }
  19. ApplicationContainerSettings(ApplicationContainerSettings source)
  20. {
  21. this.PackageFullName = source.PackageFullName;
  22. this.sessionId = source.sessionId;
  23. }
  24. public string PackageFullName
  25. {
  26. get;
  27. set;
  28. }
  29. public int SessionId
  30. {
  31. get
  32. {
  33. return this.sessionId;
  34. }
  35. set
  36. {
  37. // CurrentSession default is -1 and expect the user to set
  38. // non-negative windows session Id.
  39. if (value < ApplicationContainerSettingsDefaults.CurrentSession)
  40. {
  41. throw FxTrace.Exception.Argument("value", SR.GetString(SR.SessionValueInvalid, value));
  42. }
  43. this.sessionId = value;
  44. }
  45. }
  46. internal bool TargetingAppContainer
  47. {
  48. get
  49. {
  50. return !string.IsNullOrEmpty(this.PackageFullName);
  51. }
  52. }
  53. internal ApplicationContainerSettings Clone()
  54. {
  55. return new ApplicationContainerSettings(this);
  56. }
  57. internal string GetConnectionGroupSuffix()
  58. {
  59. string suffix = string.Empty;
  60. if (AppContainerInfo.IsAppContainerSupported && this.TargetingAppContainer)
  61. {
  62. suffix = string.Format(CultureInfo.InvariantCulture, GroupNameSuffixFormat, this.SessionId, this.PackageFullName);
  63. }
  64. return suffix;
  65. }
  66. internal bool IsMatch(ApplicationContainerSettings applicationContainerSettings)
  67. {
  68. if (applicationContainerSettings == null)
  69. {
  70. return false;
  71. }
  72. if (this.PackageFullName != applicationContainerSettings.PackageFullName)
  73. {
  74. return false;
  75. }
  76. if (this.sessionId != applicationContainerSettings.sessionId)
  77. {
  78. return false;
  79. }
  80. return true;
  81. }
  82. }
  83. }