Merge pull request #205 from m3rlinez/master
[mono.git] / mcs / class / System.ServiceModel.Discovery / System.ServiceModel.Discovery / DynamicEndpoint.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
4 using System.ServiceModel;
5 using System.ServiceModel.Channels;
6 using System.ServiceModel.Description;
7 using System.ServiceModel.Dispatcher;
8
9 namespace System.ServiceModel.Discovery
10 {
11         public class DynamicEndpoint : ServiceEndpoint
12         {
13                 public DynamicEndpoint (ContractDescription contract, Binding binding)
14                         : base (contract, CreateBinding (binding), new EndpointAddress ("http://schemas.microsoft.com/discovery/dynamic"))
15                 {
16                         if (binding == null)
17                                 throw new ArgumentNullException ("binding");
18                         DiscoveryEndpointProvider = DiscoveryEndpointProvider.CreateDefault ();
19                         FindCriteria = new FindCriteria (contract.ContractType);
20                         
21                         IsSystemEndpoint = true;
22                 }
23
24                 static CustomBinding CreateBinding (Binding source)
25                 {
26                         var bec = source.CreateBindingElements ();
27                         bec.Insert (0, new DiscoveryClientBindingElement ());
28                         return new CustomBinding (bec);
29                 }
30
31                 public DiscoveryEndpointProvider DiscoveryEndpointProvider { get; set; }
32                 public FindCriteria FindCriteria { get; set; }
33         }
34 }