ChannelBase.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.Channels
  5. {
  6. using System.Diagnostics;
  7. using System.ServiceModel;
  8. using System.ServiceModel.Diagnostics;
  9. public abstract class ChannelBase : CommunicationObject, IChannel, IDefaultCommunicationTimeouts
  10. {
  11. ChannelManagerBase channelManager;
  12. protected ChannelBase(ChannelManagerBase channelManager)
  13. {
  14. if (channelManager == null)
  15. {
  16. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("channelManager");
  17. }
  18. this.channelManager = channelManager;
  19. if (DiagnosticUtility.ShouldTraceVerbose)
  20. {
  21. TraceUtility.TraceEvent(TraceEventType.Verbose, TraceCode.ChannelCreated,
  22. SR.GetString(SR.TraceCodeChannelCreated, TraceUtility.CreateSourceString(this)), this);
  23. }
  24. }
  25. TimeSpan IDefaultCommunicationTimeouts.CloseTimeout
  26. {
  27. get { return this.DefaultCloseTimeout; }
  28. }
  29. TimeSpan IDefaultCommunicationTimeouts.OpenTimeout
  30. {
  31. get { return this.DefaultOpenTimeout; }
  32. }
  33. TimeSpan IDefaultCommunicationTimeouts.ReceiveTimeout
  34. {
  35. get { return this.DefaultReceiveTimeout; }
  36. }
  37. TimeSpan IDefaultCommunicationTimeouts.SendTimeout
  38. {
  39. get { return this.DefaultSendTimeout; }
  40. }
  41. protected override TimeSpan DefaultCloseTimeout
  42. {
  43. get { return ((IDefaultCommunicationTimeouts)this.channelManager).CloseTimeout; }
  44. }
  45. protected override TimeSpan DefaultOpenTimeout
  46. {
  47. get { return ((IDefaultCommunicationTimeouts)this.channelManager).OpenTimeout; }
  48. }
  49. protected TimeSpan DefaultReceiveTimeout
  50. {
  51. get { return ((IDefaultCommunicationTimeouts)this.channelManager).ReceiveTimeout; }
  52. }
  53. protected TimeSpan DefaultSendTimeout
  54. {
  55. get { return ((IDefaultCommunicationTimeouts)this.channelManager).SendTimeout; }
  56. }
  57. protected ChannelManagerBase Manager
  58. {
  59. get
  60. {
  61. return channelManager;
  62. }
  63. }
  64. public virtual T GetProperty<T>() where T : class
  65. {
  66. IChannelFactory factory = this.channelManager as IChannelFactory;
  67. if (factory != null)
  68. {
  69. return factory.GetProperty<T>();
  70. }
  71. IChannelListener listener = this.channelManager as IChannelListener;
  72. if (listener != null)
  73. {
  74. return listener.GetProperty<T>();
  75. }
  76. return null;
  77. }
  78. protected override void OnClosed()
  79. {
  80. base.OnClosed();
  81. if (DiagnosticUtility.ShouldTraceVerbose)
  82. {
  83. TraceUtility.TraceEvent(TraceEventType.Verbose, TraceCode.ChannelDisposed,
  84. SR.GetString(SR.TraceCodeChannelDisposed, TraceUtility.CreateSourceString(this)), this);
  85. }
  86. }
  87. }
  88. }