ProxyRpc.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.ServiceModel.Dispatcher
  5. {
  6. using System;
  7. using System.Runtime;
  8. using System.ServiceModel.Channels;
  9. using System.ServiceModel.Diagnostics;
  10. using System.Runtime.Diagnostics;
  11. struct ProxyRpc
  12. {
  13. internal readonly string Action;
  14. internal ServiceModelActivity Activity;
  15. internal Guid ActivityId;
  16. internal readonly ServiceChannel Channel;
  17. internal object[] Correlation;
  18. internal readonly object[] InputParameters;
  19. internal readonly ProxyOperationRuntime Operation;
  20. internal object[] OutputParameters;
  21. internal Message Request;
  22. internal Message Reply;
  23. internal object ReturnValue;
  24. internal MessageVersion MessageVersion;
  25. internal readonly TimeoutHelper TimeoutHelper;
  26. EventTraceActivity eventTraceActivity;
  27. internal ProxyRpc(ServiceChannel channel, ProxyOperationRuntime operation, string action, object[] inputs, TimeSpan timeout)
  28. {
  29. this.Action = action;
  30. this.Activity = null;
  31. this.eventTraceActivity = null;
  32. this.Channel = channel;
  33. this.Correlation = EmptyArray.Allocate(operation.Parent.CorrelationCount);
  34. this.InputParameters = inputs;
  35. this.Operation = operation;
  36. this.OutputParameters = null;
  37. this.Request = null;
  38. this.Reply = null;
  39. this.ActivityId = Guid.Empty;
  40. this.ReturnValue = null;
  41. this.MessageVersion = channel.MessageVersion;
  42. this.TimeoutHelper = new TimeoutHelper(timeout);
  43. }
  44. internal EventTraceActivity EventTraceActivity
  45. {
  46. get
  47. {
  48. if (this.eventTraceActivity == null)
  49. {
  50. this.eventTraceActivity = new EventTraceActivity();
  51. }
  52. return this.eventTraceActivity;
  53. }
  54. set
  55. {
  56. this.eventTraceActivity = value;
  57. }
  58. }
  59. }
  60. }