diff options
author | Atsushi Eno <atsushi@ximian.com> | 2011-02-24 08:33:41 +0300 |
---|---|---|
committer | Atsushi Eno <atsushi@ximian.com> | 2011-02-24 08:33:41 +0300 |
commit | b4a44a80a888c908ed2d9c7a4ef4db5132f53447 (patch) | |
tree | 2c4da80ad7218a4423c2cb357d9041623fdd525c /mcs/class/System.ServiceModel.Discovery | |
parent | f6fffc0e18251ea15fb84ca917e297e953807cd8 (diff) |
To header rewrite only happens in Adhoc mode.
Update contracts to comply with that and make it consistent between versions.
Diffstat (limited to 'mcs/class/System.ServiceModel.Discovery')
6 files changed, 114 insertions, 13 deletions
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs index 96ed80597f2..ead1a1a124d 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs @@ -31,6 +31,7 @@ using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; using System.ServiceModel.Discovery; +using System.Xml; namespace System.ServiceModel.Discovery.Version11 { @@ -47,8 +48,16 @@ namespace System.ServiceModel.Discovery.Version11 [MessageContract (IsWrapped = false)] public class OnlineAnnouncement { + public OnlineAnnouncement () + { + Id = new UniqueId (); + } + [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequence11 MessageSequence { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://www.w3.org/2005/08/addressing")] + public UniqueId Id { get; set; } + [MessageBodyMember (Name = "Hello", Namespace = NS)] public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; } } @@ -56,8 +65,15 @@ namespace System.ServiceModel.Discovery.Version11 [MessageContract (IsWrapped = false)] public class OfflineAnnouncement { + public OfflineAnnouncement () + { + Id = new UniqueId (); + } + [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequence11 MessageSequence { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://www.w3.org/2005/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Bye", Namespace = NS)] public EndpointDiscoveryMetadata11 EndpointDiscoveryMetadata { get; set; } } @@ -65,6 +81,14 @@ namespace System.ServiceModel.Discovery.Version11 [MessageContract (IsWrapped = false)] public class FindRequest { + public FindRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://www.w3.org/2005/08/addressing")] + public UniqueId Id { get; set; } + [MessageBodyMember (Name = "Probe", Namespace = NS)] public FindCriteria11 Body { get; set; } } @@ -86,6 +110,13 @@ namespace System.ServiceModel.Discovery.Version11 [MessageContract (IsWrapped = false)] public class ResolveRequest { + public ResolveRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://www.w3.org/2005/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Resolve", Namespace = NS)] public ResolveCriteria11 Body { get; set; } } diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs index 38d18a58805..44d1c286439 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs @@ -31,6 +31,7 @@ using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; using System.ServiceModel.Discovery; +using System.Xml; namespace System.ServiceModel.Discovery.VersionApril2005 { @@ -43,20 +44,19 @@ namespace System.ServiceModel.Discovery.VersionApril2005 public const string ProbeMatchAction = NS + "/ProbeMatches"; public const string ResolveAction = NS + "/Resolve"; public const string ResolveMatchAction = NS + "/ResolveMatches"; - public const string ToUrn = "urn:schemas-xmlsoap-org:ws:2005:04:discovery"; [MessageContract (IsWrapped = false)] public class OnlineAnnouncement { public OnlineAnnouncement () { - To = new Uri (MessageContractsApril2005.ToUrn); + Id = new UniqueId (); } [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequenceApril2005 MessageSequence { get; set; } - [MessageHeader (Name = "To", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] - public Uri To { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Hello", Namespace = NS)] public EndpointDiscoveryMetadataApril2005 EndpointDiscoveryMetadata { get; set; } @@ -67,13 +67,13 @@ namespace System.ServiceModel.Discovery.VersionApril2005 { public OfflineAnnouncement () { - To = new Uri (MessageContractsApril2005.ToUrn); + Id = new UniqueId (); } [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequenceApril2005 MessageSequence { get; set; } - [MessageHeader (Name = "To", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] - public Uri To { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Bye", Namespace = NS)] public EndpointDiscoveryMetadataApril2005 EndpointDiscoveryMetadata { get; set; } } @@ -81,6 +81,13 @@ namespace System.ServiceModel.Discovery.VersionApril2005 [MessageContract (IsWrapped = false)] public class FindRequest { + public FindRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Probe", Namespace = NS)] public FindCriteriaApril2005 Body { get; set; } } @@ -102,6 +109,13 @@ namespace System.ServiceModel.Discovery.VersionApril2005 [MessageContract (IsWrapped = false)] public class ResolveRequest { + public ResolveRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Resolve", Namespace = NS)] public ResolveCriteriaApril2005 Body { get; set; } } diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs index 36b4bf80fda..0f21a0b7f36 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs @@ -31,6 +31,7 @@ using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; using System.ServiceModel.Discovery; +using System.Xml; namespace System.ServiceModel.Discovery.VersionCD1 { @@ -47,8 +48,16 @@ namespace System.ServiceModel.Discovery.VersionCD1 [MessageContract (IsWrapped = false)] public class OnlineAnnouncement { + public OnlineAnnouncement () + { + Id = new UniqueId (); + } + [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequenceCD1 MessageSequence { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } + [MessageBodyMember (Name = "Hello", Namespace = NS)] public EndpointDiscoveryMetadataCD1 EndpointDiscoveryMetadata { get; set; } } @@ -56,8 +65,15 @@ namespace System.ServiceModel.Discovery.VersionCD1 [MessageContract (IsWrapped = false)] public class OfflineAnnouncement { + public OfflineAnnouncement () + { + Id = new UniqueId (); + } + [MessageHeader (Name = "AppSequence", Namespace = NS)] public DiscoveryMessageSequenceCD1 MessageSequence { get; set; } + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Bye", Namespace = NS)] public EndpointDiscoveryMetadataCD1 EndpointDiscoveryMetadata { get; set; } } @@ -65,6 +81,13 @@ namespace System.ServiceModel.Discovery.VersionCD1 [MessageContract (IsWrapped = false)] public class FindRequest { + public FindRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Probe", Namespace = NS)] public FindCriteriaCD1 Body { get; set; } } @@ -86,6 +109,13 @@ namespace System.ServiceModel.Discovery.VersionCD1 [MessageContract (IsWrapped = false)] public class ResolveRequest { + public ResolveRequest () + { + Id = new UniqueId (); + } + + [MessageHeader (Name = "MessageId", Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")] + public UniqueId Id { get; set; } [MessageBodyMember (Name = "Resolve", Namespace = NS)] public ResolveCriteriaCD1 Body { get; set; } } diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryViaUriBehavior.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryViaUriBehavior.cs index 1f2a7b69922..9e48579800d 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryViaUriBehavior.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryViaUriBehavior.cs @@ -35,12 +35,15 @@ namespace System.ServiceModel.Discovery { internal class DiscoveryViaUriBehavior : IEndpointBehavior { - public DiscoveryViaUriBehavior (Uri via) + public DiscoveryViaUriBehavior (DiscoveryVersion version, Uri via) { - Via = via; + this.version = version; + this.via = via; } - Uri Via { get; set; } + DiscoveryVersion version; + + Uri via; public void AddBindingParameters (ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) { @@ -53,7 +56,30 @@ namespace System.ServiceModel.Discovery if (clientRuntime == null) throw new ArgumentNullException ("clientRuntime"); - clientRuntime.Via = Via; + clientRuntime.Via = via; + clientRuntime.MessageInspectors.Add (new ClientMessageInspector (version)); + } + + class ClientMessageInspector : IClientMessageInspector + { + public ClientMessageInspector (DiscoveryVersion version) + { + this.version = version; + } + + DiscoveryVersion version; + + public object BeforeSendRequest (ref Message request, IClientChannel channel) + { + // overwrite To header with version-specific URN. + request.Headers.To = version.AdhocAddress; + return null; + } + + public void AfterReceiveReply (ref Message reply, object correlationState) + { + // do nothing + } } public void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs index 14f07817bb5..a41e88fb52b 100755 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs @@ -81,7 +81,7 @@ namespace System.ServiceModel.Discovery TransportSettings = new UdpTransportSettings (); MulticastAddress = multicastAddress; MaxAnnouncementDelay = TimeSpan.FromMilliseconds (500); - Behaviors.Add (new DiscoveryViaUriBehavior (multicastAddress)); + Behaviors.Add (new DiscoveryViaUriBehavior (discoveryVersion, multicastAddress)); } static Binding CreateBinding (DiscoveryVersion discoveryVersion) diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs index 582a4cadfd2..616a23d4e5a 100755 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs @@ -81,7 +81,7 @@ namespace System.ServiceModel.Discovery TransportSettings = new UdpTransportSettings (); MulticastAddress = multicastAddress; MaxResponseDelay = TimeSpan.FromMilliseconds (500); - Behaviors.Add (new DiscoveryViaUriBehavior (multicastAddress)); + Behaviors.Add (new DiscoveryViaUriBehavior (discoveryVersion, multicastAddress)); } static Binding CreateBinding (DiscoveryVersion discoveryVersion) |