Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAtsushi Eno <atsushi@ximian.com>2011-02-24 08:33:41 +0300
committerAtsushi Eno <atsushi@ximian.com>2011-02-24 08:33:41 +0300
commitb4a44a80a888c908ed2d9c7a4ef4db5132f53447 (patch)
tree2c4da80ad7218a4423c2cb357d9041623fdd525c /mcs/class/System.ServiceModel.Discovery
parentf6fffc0e18251ea15fb84ca917e297e953807cd8 (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')
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs31
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs28
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs30
-rw-r--r--mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryViaUriBehavior.cs34
-rwxr-xr-xmcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs2
-rwxr-xr-xmcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs2
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)