2 // ServiceHostBaseTest.cs
5 // Igor Zelmanovich <igorz@mainsoft.com>
7 // Copyright (C) 2008 Mainsoft, Inc. http://www.mainsoft.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System.Collections.Generic;
32 using NUnit.Framework;
33 using System.ServiceModel;
34 using System.ServiceModel.Description;
35 using System.ServiceModel.Dispatcher;
36 using SMMessage = System.ServiceModel.Channels.Message;
37 using System.ServiceModel.Channels;
39 using MonoTests.Helpers;
41 namespace MonoTests.System.ServiceModel
44 public class ServiceHostBaseTest
46 class Poker : ServiceHostBase
48 public event EventHandler OnApplyConfiguration;
50 protected override ServiceDescription CreateDescription (out IDictionary<string, ContractDescription> implementedContracts) {
51 implementedContracts = new Dictionary<string, ContractDescription> ();
52 ServiceDescription description = new ServiceDescription ();
53 description.ServiceType = typeof (MyService);
54 description.Behaviors.Add (new ServiceBehaviorAttribute ());
58 protected override void ApplyConfiguration () {
59 if (OnApplyConfiguration != null)
60 OnApplyConfiguration (this, EventArgs.Empty);
61 base.ApplyConfiguration ();
64 public void CallInitializeDescription () {
65 InitializeDescription (new UriSchemeKeyedCollection ());
68 protected override void InitializeRuntime () {
69 base.InitializeRuntime ();
72 public void CallInitializeRuntime () {
76 public void DoAddBaseAddress (Uri uri)
84 Poker host = new Poker ();
86 Assert.AreEqual (null, host.Description, "Description");
87 Assert.AreEqual (null, host.Authorization, "Authorization");
91 public void DefaultConfiguration () {
92 Poker host = new Poker ();
93 host.OnApplyConfiguration += delegate (object sender, EventArgs e) {
94 Assert.AreEqual (1, host.Description.Behaviors.Count, "Description.Behaviors.Count #1");
96 host.CallInitializeDescription ();
98 Assert.AreEqual (true, host.Description.Behaviors.Count > 1, "Description.Behaviors.Count #2");
100 Assert.IsNotNull (host.Description.Behaviors.Find<ServiceDebugBehavior> (), "ServiceDebugBehavior");
101 Assert.IsNotNull (host.Description.Behaviors.Find<ServiceAuthorizationBehavior> (), "ServiceDebugBehavior");
102 Assert.IsNotNull (host.Authorization, "Authorization #1");
104 Assert.AreEqual (host.Description.Behaviors.Find<ServiceAuthorizationBehavior> (), host.Authorization, "Authorization #2");
108 [ExpectedException (typeof (InvalidOperationException))]
109 public void ApplyConfigurationNoDescription () {
110 CustomServiceHost customHost = new CustomServiceHost ();
111 customHost.ApplyConfiguration ();
114 class CustomServiceHost : ServiceHostBase
117 public CustomServiceHost () {
121 public new void ApplyConfiguration () {
122 base.ApplyConfiguration ();
125 protected override ServiceDescription CreateDescription (out IDictionary<string, ContractDescription> implementedContracts) {
126 throw new NotImplementedException ();
131 public void InitializeRuntime () {
132 Poker host = new Poker ();
133 host.CallInitializeDescription ();
134 var port = NetworkHelpers.FindFreePort ();
135 EndpointAddress address = new EndpointAddress ("http://localhost:" + port + "/");
136 ContractDescription contract = ContractDescription.GetContract (typeof (IMyContract));
137 ServiceEndpoint endpoint = new ServiceEndpoint (contract, new BasicHttpBinding (), address);
138 endpoint.ListenUri = address.Uri;
139 host.Description.Endpoints.Add (endpoint);
141 Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
143 host.CallInitializeRuntime ();
145 Assert.AreEqual (1, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
146 Assert.AreEqual (CommunicationState.Created, host.ChannelDispatchers [0].State, "ChannelDispatchers.Count #1");
150 interface IMyContract
156 class MyService : IMyContract
158 public string GetData () {
159 return "Hello World";
164 public void ChannelDispatchers_NoDebug () {
165 var ep = "http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString();
166 ServiceHost h = new ServiceHost (typeof (AllActions), new Uri (ep));
167 h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
169 ServiceDebugBehavior b = h.Description.Behaviors.Find<ServiceDebugBehavior> ();
170 b.HttpHelpPageEnabled = false;
174 Assert.AreEqual (h.ChannelDispatchers.Count, 1);
175 ChannelDispatcher channelDispatcher = h.ChannelDispatchers[0] as ChannelDispatcher;
176 Assert.IsNotNull (channelDispatcher, "#1");
177 Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#2");
178 EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
179 Assert.IsNotNull (filter, "#3");
180 Assert.IsTrue (filter.Address.Equals (new EndpointAddress (ep + "/address")), "#4");
181 Assert.IsFalse (filter.IncludeHostNameInComparison, "#5");
182 Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#6");
189 public void ChannelDispatchers_WithDebug () {
190 var ep = "http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString();
191 ServiceHost h = new ServiceHost (typeof (AllActions), new Uri (ep));
192 h.AddServiceEndpoint (typeof (AllActions).FullName, new BasicHttpBinding (), "address");
193 ServiceMetadataBehavior b = new ServiceMetadataBehavior ();
194 b.HttpGetEnabled = true;
195 b.HttpGetUrl = new Uri( ep );
196 h.Description.Behaviors.Add (b);
199 Assert.AreEqual (h.ChannelDispatchers.Count, 2, "#1");
200 ChannelDispatcher channelDispatcher = h.ChannelDispatchers[1] as ChannelDispatcher;
201 Assert.IsNotNull (channelDispatcher, "#2");
202 Assert.IsTrue (channelDispatcher.Endpoints.Count == 1, "#3");
203 EndpointAddressMessageFilter filter = channelDispatcher.Endpoints [0].AddressFilter as EndpointAddressMessageFilter;
204 Assert.IsNotNull (filter, "#4");
205 Assert.IsTrue (filter.Address.Equals (new EndpointAddress (ep)), "#5");
206 Assert.IsFalse (filter.IncludeHostNameInComparison, "#6");
207 Assert.IsTrue (channelDispatcher.Endpoints [0].ContractFilter is MatchAllMessageFilter, "#7");
212 public void SpecificActionTest ()
214 //EndpointDispatcher d = new EndpointDispatcher(
215 var ep = NetworkHelpers.LocalEphemeralEndPoint().ToString();
216 ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://" + ep));
217 h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "address");
220 ChannelDispatcher d = h.ChannelDispatchers [0] as ChannelDispatcher;
221 EndpointDispatcher ed = d.Endpoints [0] as EndpointDispatcher;
222 ActionMessageFilter actionFilter = ed.ContractFilter as ActionMessageFilter;
223 Assert.IsNotNull (actionFilter, "#1");
224 Assert.IsTrue (actionFilter.Actions.Count == 1, "#2");
229 public void InitializeRuntimeBehaviors1 () {
230 HostState st = new HostState ();
231 var ep = NetworkHelpers.LocalEphemeralEndPoint().ToString();
232 ServiceHost h = new ServiceHost (typeof (SpecificAction2), new Uri ("http://" + ep));
233 h.AddServiceEndpoint (typeof (SpecificAction2), new BasicHttpBinding (), "temp");
235 h.Description.Behaviors.Add (new MyServiceBehavior (st, h));
237 h.Description.Endpoints [0].Behaviors.Add (new MyEndpointBehavior (st, h));
238 h.Description.Endpoints [0].Contract.Behaviors.Add (new MyContractBehavior (st, h));
239 h.Description.Endpoints [0].Contract.Operations [0].Behaviors.Add (new MyOperationBehavior (st, h));
244 string expected = "Start, IServiceBehavior.Validate, IContractBehavior.Validate, IEndpointBehavior.Validate, IOperationBehavior.ApplyDispatchBehavior, IServiceBehavior.AddBindingParameters, IContractBehavior.AddBindingParameters, IEndpointBehavior.AddBindingParameters, IOperationBehavior.AddBindingParameters, IServiceBehavior.ApplyDispatchBehavior, IContractBehavior.ApplyDispatchBehavior, IEndpointBehavior.ApplyDispatchBehavior, IOperationBehavior.ApplyDispatchBehavior";
245 Assert.AreEqual (expected, st.CurrentStage);
249 public void InitializeRuntimeBehaviors2 () {
250 HostState st = new HostState ();
251 var ep = NetworkHelpers.LocalEphemeralEndPoint().ToString();
252 ServiceHost h = new ServiceHost (typeof (SpecificAction), new Uri ("http://" + ep));
253 h.AddServiceEndpoint (typeof (Action1Interface), new BasicHttpBinding (), "temp");
254 h.AddServiceEndpoint (typeof (Action2Interface), new BasicHttpBinding (), "temp2");
256 h.Description.Behaviors.Add (new MyServiceBehavior (st, h));
258 h.Description.Endpoints [0].Behaviors.Add (new MyEndpointBehavior (st, h));
259 h.Description.Endpoints [0].Contract.Behaviors.Add (new MyContractBehavior (st, h));
260 h.Description.Endpoints [0].Contract.Operations [0].Behaviors.Add (new MyOperationBehavior (st, h));
262 h.Description.Endpoints [1].Behaviors.Add (new MyEndpointBehavior (st, h));
263 h.Description.Endpoints [1].Contract.Behaviors.Add (new MyContractBehavior (st, h));
264 h.Description.Endpoints [1].Contract.Operations [0].Behaviors.Add (new MyOperationBehavior (st, h));
268 string expected = "Start, IServiceBehavior.Validate, IContractBehavior.Validate, IEndpointBehavior.Validate, IOperationBehavior.ApplyDispatchBehavior, IContractBehavior.Validate, IEndpointBehavior.Validate, IOperationBehavior.ApplyDispatchBehavior, IServiceBehavior.AddBindingParameters, IContractBehavior.AddBindingParameters, IEndpointBehavior.AddBindingParameters, IOperationBehavior.AddBindingParameters, IServiceBehavior.AddBindingParameters, IContractBehavior.AddBindingParameters, IEndpointBehavior.AddBindingParameters, IOperationBehavior.AddBindingParameters, IServiceBehavior.ApplyDispatchBehavior, IContractBehavior.ApplyDispatchBehavior, IEndpointBehavior.ApplyDispatchBehavior, IOperationBehavior.ApplyDispatchBehavior, IContractBehavior.ApplyDispatchBehavior, IEndpointBehavior.ApplyDispatchBehavior, IOperationBehavior.ApplyDispatchBehavior";
269 Assert.AreEqual (expected, st.CurrentStage);
273 public void AddBaseAddress ()
275 var host = new Poker ();
276 Assert.AreEqual (0, host.BaseAddresses.Count, "#1");
277 host.DoAddBaseAddress (new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()));
278 Assert.AreEqual (1, host.BaseAddresses.Count, "#1");
279 host.DoAddBaseAddress (new Uri ("net.tcp://localhost:" + NetworkHelpers.FindFreePort ()));
280 Assert.AreEqual (2, host.BaseAddresses.Count, "#1");
284 [ExpectedException (typeof (ArgumentException))]
285 public void AddBaseAddress2 ()
287 var host = new Poker ();
288 Assert.AreEqual (0, host.BaseAddresses.Count, "#1");
289 host.DoAddBaseAddress (new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()));
290 // http base address is already added.
291 host.DoAddBaseAddress (new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()));
295 public void AddServiceEndpointUri ()
297 int port = NetworkHelpers.FindFreePort ();
298 var host = new ServiceHost (typeof (AllActions),
299 new Uri ("http://localhost:" + port));
300 var se = host.AddServiceEndpoint (typeof (AllActions),
301 new BasicHttpBinding (), "foobar");
302 Assert.AreEqual ("http://localhost:" + port + "/foobar", se.Address.Uri.AbsoluteUri, "#1");
303 Assert.AreEqual ("http://localhost:" + port + "/foobar", se.ListenUri.AbsoluteUri, "#2");
307 public void AddServiceEndpointUri2 ()
309 int port = NetworkHelpers.FindFreePort ();
310 var host = new ServiceHost (typeof (AllActions),
311 new Uri ("http://localhost:" + port));
312 var se = host.AddServiceEndpoint (typeof (AllActions),
313 new BasicHttpBinding (), String.Empty);
314 Assert.AreEqual ("http://localhost:" + port + "/", se.Address.Uri.AbsoluteUri, "#1");
315 Assert.AreEqual ("http://localhost:" + port + "/", se.ListenUri.AbsoluteUri, "#2");
319 [ExpectedException (typeof (InvalidOperationException))]
320 public void AddServiceEndpointOnlyMex ()
322 var ep = NetworkHelpers.LocalEphemeralEndPoint().ToString();
323 var host = new ServiceHost (typeof (AllActions),
324 new Uri ("http://" + ep));
325 host.Description.Behaviors.Add (new ServiceMetadataBehavior ());
326 host.AddServiceEndpoint ("IMetadataExchange",
327 new BasicHttpBinding (), "/wsdl");
330 // to make sure that throwing IOE from here does not count.
334 Assert.Fail ("should not open");
338 [Category ("NotWorking")] // Timeouts randomly #5813
339 public void RunDestinationUnreachableTest ()
341 RunDestinationUnreachableTest ("BasicHttp", new BasicHttpBinding ());
345 [Category ("NotWorking")] // Timeouts randomly #5813
346 public void RunDestinationUnreachableTest2 ()
348 RunDestinationUnreachableTest ("CustomSoap12", new CustomBinding (new HttpTransportBindingElement ()));
351 void RunDestinationUnreachableTest (string label, Binding binding)
353 string address = "http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString();
354 var host = OpenHost (address, binding);
357 var client = new DestinationUnreachableClient (binding, address);
358 client.NotImplementedOperation ();
359 Assert.Fail (label + " ActionNotSupportedException is expected");
360 } catch (ActionNotSupportedException) {
361 // catching it instead of ExpectedException to distinguish errors at service side.
367 ServiceHost OpenHost (string address, Binding binding)
369 var baseAddresses = new Uri[] { new Uri(address) };
371 var host = new ServiceHost (typeof (DummyService), baseAddresses);
372 host.AddServiceEndpoint (typeof (IDummyService), binding, new Uri ("", UriKind.Relative));
378 public void AddServiceEndpoint_Directly ()
380 var host = new ServiceHost (typeof (DummyService));
381 var port = NetworkHelpers.FindFreePort ();
382 var address = new EndpointAddress ("http://localhost:" + port);
383 var binding = new BasicHttpBinding ();
384 var contract = ContractDescription.GetContract (typeof (IDummyService));
385 host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
389 [ExpectedException (typeof (ArgumentException))]
390 public void AddServiceEndpoint_Directly_NullAddress ()
392 var host = new ServiceHost (typeof (DummyService));
393 var binding = new BasicHttpBinding ();
394 var contract = ContractDescription.GetContract (typeof (IDummyService));
395 host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, null));
399 [ExpectedException (typeof (ArgumentException))]
400 public void AddServiceEndpoint_Directly_NullBinding ()
402 var host = new ServiceHost (typeof (DummyService));
403 var port = NetworkHelpers.FindFreePort ();
404 var address = new EndpointAddress ("http://localhost:" + port);
405 var contract = ContractDescription.GetContract (typeof (IDummyService));
406 host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address));
410 [ExpectedException (typeof (ArgumentException))]
411 public void AddServiceMetadataEndpoint ()
413 var host = new ServiceHost (typeof (DummyService));
414 host.AddServiceEndpoint (new ServiceMetadataEndpoint ());
418 [ExpectedException (typeof (InvalidOperationException))]
419 public void AddServiceEndpoint_Directly_ContractMismatch ()
421 var host = new ServiceHost (typeof (DummyService));
422 var port = NetworkHelpers.FindFreePort ();
423 var address = new EndpointAddress ("http://localhost:" + port);
424 var binding = new BasicHttpBinding ();
425 var contract = ContractDescription.GetContract (typeof (INotImplementedService));
426 host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
435 public class HostState
437 public string CurrentStage = "Start";
440 public class MyServiceBehavior : IServiceBehavior
442 #region IServiceBehavior Members
446 public MyServiceBehavior (HostState state, ServiceHost h) {
451 public void AddBindingParameters (ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, global::System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters) {
452 _state.CurrentStage += ", IServiceBehavior.AddBindingParameters";
453 bindingParameters.Add (this);
456 public void ApplyDispatchBehavior (ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) {
457 _state.CurrentStage += ", IServiceBehavior.ApplyDispatchBehavior";
460 public void Validate (ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) {
461 _state.CurrentStage += ", IServiceBehavior.Validate";
462 Assert.AreEqual (_host.ChannelDispatchers.Count, 0);
468 public class MyEndpointBehavior : IEndpointBehavior
470 #region IEndpointBehavior Members
473 public MyEndpointBehavior (HostState state, ServiceHost h) {
478 public void AddBindingParameters (ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) {
479 Console.WriteLine ("IEndpointBehavior - AddBindingParameters " + _host.ChannelDispatchers.Count);
480 _state.CurrentStage += ", IEndpointBehavior.AddBindingParameters";
481 bindingParameters.Add (this);
484 public void ApplyClientBehavior (ServiceEndpoint endpoint, ClientRuntime clientRuntime) {
485 Console.WriteLine ("IEndpointBehavior - ApplyClientBehavior " + _host.ChannelDispatchers.Count);
488 public void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) {
489 Console.WriteLine ("IEndpointBehavior - ApplyDispatchBehavior " + _host.ChannelDispatchers.Count);
490 _state.CurrentStage += ", IEndpointBehavior.ApplyDispatchBehavior";
493 public void Validate (ServiceEndpoint endpoint) {
494 Console.WriteLine ("IEndpointBehavior - Validate " + _host.ChannelDispatchers.Count);
495 _state.CurrentStage += ", IEndpointBehavior.Validate";
496 Assert.AreEqual (_host.ChannelDispatchers.Count, 0);
502 public class MyContractBehavior : IContractBehavior
504 #region IContractBehavior Members
507 public MyContractBehavior (HostState state, ServiceHost h) {
512 public void AddBindingParameters (ContractDescription contractDescription, ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) {
513 Console.WriteLine ("Contract - AddBindingParameters " + _host.ChannelDispatchers.Count);
514 _state.CurrentStage += ", IContractBehavior.AddBindingParameters";
515 bindingParameters.Add (this);
518 public void ApplyClientBehavior (ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime) {
519 Console.WriteLine ("Contract - ApplyClientBehavior " + _host.ChannelDispatchers.Count);
522 public void ApplyDispatchBehavior (ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime) {
523 Console.WriteLine ("Contract - ApplyDispatchBehavior " + _host.ChannelDispatchers.Count);
524 _state.CurrentStage += ", IContractBehavior.ApplyDispatchBehavior";
527 public void Validate (ContractDescription contractDescription, ServiceEndpoint endpoint) {
528 Console.WriteLine ("Contract - Validate " + _host.ChannelDispatchers.Count);
529 _state.CurrentStage += ", IContractBehavior.Validate";
530 Assert.AreEqual (_host.ChannelDispatchers.Count, 0);
536 public class MyOperationBehavior : IOperationBehavior
538 #region IOperationBehavior Members
541 public MyOperationBehavior (HostState state, ServiceHost h) {
546 public void AddBindingParameters (OperationDescription operationDescription, BindingParameterCollection bindingParameters) {
547 Console.WriteLine ("IOperationBehavior - AddBindingParameters " + _host.ChannelDispatchers.Count);
548 _state.CurrentStage += ", IOperationBehavior.AddBindingParameters";
549 bindingParameters.Add (this);
552 public void ApplyClientBehavior (OperationDescription operationDescription, ClientOperation clientOperation) {
553 Console.WriteLine ("IOperationBehavior - ApplyClientBehavior " + _host.ChannelDispatchers.Count);
556 public void ApplyDispatchBehavior (OperationDescription operationDescription, DispatchOperation dispatchOperation) {
557 Console.WriteLine ("IOperationBehavior - ApplyDispatchBehavior " + _host.ChannelDispatchers.Count);
558 _state.CurrentStage += ", IOperationBehavior.ApplyDispatchBehavior";
561 public void Validate (OperationDescription operationDescription) {
562 Console.WriteLine ("IOperationBehavior - Validate " + _host.ChannelDispatchers.Count);
563 _state.CurrentStage += ", IOperationBehavior.ApplyDispatchBehavior";
564 Assert.AreEqual (_host.ChannelDispatchers.Count, 0);
573 [OperationContract (Action = "*", ReplyAction = "*")]
574 public SMMessage Get (SMMessage req) {
580 interface Action1Interface
582 [OperationContract (Action = "Specific1", ReplyAction = "*")]
583 SMMessage GetMessage1 (SMMessage req);
587 interface Action2Interface
589 [OperationContract (Action = "Specific2", ReplyAction = "*")]
590 SMMessage GetMessage2 (SMMessage req);
593 class SpecificAction : Action1Interface, Action2Interface
595 public SMMessage GetMessage1 (SMMessage req) {
599 public SMMessage GetMessage2 (SMMessage req) {
605 class SpecificAction2
607 [OperationContract (Action = "Specific", ReplyAction = "*")]
608 public SMMessage GetMessage1 (SMMessage req) {
613 class MyChannelDispatcher : ChannelDispatcher
615 public bool Attached = false;
617 public MyChannelDispatcher (IChannelListener l) : base (l) { }
618 protected override void Attach (ServiceHostBase host) {
624 class MyChannelListener : IChannelListener
626 #region IChannelListener Members
628 public IAsyncResult BeginWaitForChannel (TimeSpan timeout, AsyncCallback callback, object state) {
629 throw new NotImplementedException ();
632 public bool EndWaitForChannel (IAsyncResult result) {
633 throw new NotImplementedException ();
636 public T GetProperty<T> () where T : class {
637 throw new NotImplementedException ();
641 get { throw new NotImplementedException (); }
644 public bool WaitForChannel (TimeSpan timeout) {
645 throw new NotImplementedException ();
650 #region ICommunicationObject Members
652 public void Abort () {
653 throw new NotImplementedException ();
656 public IAsyncResult BeginClose (TimeSpan timeout, AsyncCallback callback, object state) {
657 throw new NotImplementedException ();
660 public IAsyncResult BeginClose (AsyncCallback callback, object state) {
661 throw new NotImplementedException ();
664 public IAsyncResult BeginOpen (TimeSpan timeout, AsyncCallback callback, object state) {
665 throw new NotImplementedException ();
668 public IAsyncResult BeginOpen (AsyncCallback callback, object state) {
669 throw new NotImplementedException ();
672 public void Close (TimeSpan timeout) {
673 throw new NotImplementedException ();
676 public void Close () {
677 throw new NotImplementedException ();
680 public event EventHandler Closed;
682 public event EventHandler Closing;
684 public void EndClose (IAsyncResult result) {
685 throw new NotImplementedException ();
688 public void EndOpen (IAsyncResult result) {
689 throw new NotImplementedException ();
692 public event EventHandler Faulted;
694 public void Open (TimeSpan timeout) {
695 throw new NotImplementedException ();
698 public void Open () {
699 throw new NotImplementedException ();
702 public event EventHandler Opened;
704 public event EventHandler Opening;
706 public CommunicationState State {
707 get { throw new NotImplementedException (); }
714 public interface IDummyService
717 void DummyOperation ();
719 public class DummyService : IDummyService
721 public void DummyOperation ()
727 public interface INotImplementedService
730 void NotImplementedOperation ();
732 public class DestinationUnreachableClient : ClientBase<INotImplementedService>, INotImplementedService
734 public void NotImplementedOperation ()
736 Channel.NotImplementedOperation ();
739 public DestinationUnreachableClient (Binding binding, string address)
740 : base (binding, new EndpointAddress (address))