f6660e1c19c3826ffc1892a3898ffe97152e434d
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel.Dispatcher / DispatchRuntime.cs
1 //
2 // DispatchRuntime.cs
3 //
4 // Author:
5 //      Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // Copyright (C) 2005-2010 Novell, Inc.  http://www.novell.com
8 //
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:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
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.
27 //
28 using System;
29 using System.Collections.Generic;
30 using System.Collections.ObjectModel;
31 using System.Reflection;
32 #if !NET_2_1
33 using System.IdentityModel.Policy;
34 #if !XAMMAC_4_5
35 using System.Web.Security;
36 #endif
37 #endif
38 using System.Text;
39 using System.Threading;
40 using System.ServiceModel;
41 using System.ServiceModel.Channels;
42 using System.ServiceModel.Description;
43
44 namespace System.ServiceModel.Dispatcher
45 {
46         public sealed class DispatchRuntime
47         {
48 #if NET_2_1 || XAMMAC_4_5
49                 internal DispatchRuntime (EndpointDispatcher dispatcher, ClientRuntime callbackClientRuntime)
50                 {
51                         UnhandledDispatchOperation = new DispatchOperation (
52                                 this, "*", "*", "*");
53                 }
54 #else
55                 DispatchOperation.DispatchOperationCollection operations =
56                         new DispatchOperation.DispatchOperationCollection ();
57
58
59                 internal DispatchRuntime (EndpointDispatcher dispatcher, ClientRuntime callbackClientRuntime)
60                 {
61                         EndpointDispatcher = dispatcher;
62                         CallbackClientRuntime = callbackClientRuntime ?? new ClientRuntime (EndpointDispatcher.ContractName, EndpointDispatcher.ContractNamespace, this);
63                         UnhandledDispatchOperation = new DispatchOperation (
64                                 this, "*", "*", "*");
65
66                         AutomaticInputSessionShutdown = true;
67                         PrincipalPermissionMode = PrincipalPermissionMode.UseWindowsGroups; // silly default value for us.
68                         SuppressAuditFailure = true;
69                         ValidateMustUnderstand = true;
70
71                         InputSessionShutdownHandlers = new SynchronizedCollection<IInputSessionShutdown> ();
72                         InstanceContextInitializers = new SynchronizedCollection<IInstanceContextInitializer> ();
73                         MessageInspectors = new SynchronizedCollection<IDispatchMessageInspector> ();
74                 }
75
76                 [MonoTODO]
77                 public AuditLogLocation SecurityAuditLogLocation { get; set; }
78
79                 [MonoTODO]
80                 public bool AutomaticInputSessionShutdown { get; set; }
81
82                 public ChannelDispatcher ChannelDispatcher {
83                         get { return EndpointDispatcher.ChannelDispatcher; }
84                 }
85
86                 [MonoTODO]
87                 public ConcurrencyMode ConcurrencyMode { get; set; }
88
89                 public EndpointDispatcher EndpointDispatcher { get; private set; }
90
91                 public ClientRuntime CallbackClientRuntime { get; internal set; }
92
93                 [MonoTODO]
94                 public ReadOnlyCollection<IAuthorizationPolicy> ExternalAuthorizationPolicies { get; set; }
95
96                 [MonoTODO]
97                 public bool IgnoreTransactionMessageProperty { get; set; }
98
99                 [MonoTODO]
100                 public bool ImpersonateCallerForAllOperations { get; set; }
101
102                 [MonoTODO]
103                 public SynchronizedCollection<IInputSessionShutdown> InputSessionShutdownHandlers { get; private set; }
104
105                 [MonoTODO]
106                 public SynchronizedCollection<IInstanceContextInitializer> InstanceContextInitializers { get; private set; }
107
108                 public IInstanceProvider InstanceProvider { get; set; }
109
110                 public IInstanceContextProvider InstanceContextProvider { get; set; }
111
112                 [MonoTODO]
113                 public AuditLevel MessageAuthenticationAuditLevel { get; set; }
114
115                 public SynchronizedCollection<IDispatchMessageInspector> MessageInspectors { get; private set; }
116
117                 public SynchronizedKeyedCollection<string,DispatchOperation> Operations {
118                         get { return operations; }
119                 }
120
121                 public IDispatchOperationSelector OperationSelector { get; set; }
122
123                 [MonoTODO]
124                 public PrincipalPermissionMode PrincipalPermissionMode { get; set; }
125
126                 [MonoTODO]
127                 public bool ReleaseServiceInstanceOnTransactionComplete { get; set; }
128
129                 [MonoTODO]
130                 public RoleProvider RoleProvider { get; set; }
131
132                 [MonoTODO]
133                 public AuditLevel ServiceAuthorizationAuditLevel { get; set; }
134
135                 [MonoTODO]
136                 public ServiceAuthorizationManager ServiceAuthorizationManager { get; set; }
137
138                 public InstanceContext SingletonInstanceContext { get; set; }
139
140                 [MonoTODO]
141                 public bool SuppressAuditFailure { get; set; }
142
143                 [MonoTODO]
144                 public SynchronizationContext SynchronizationContext { get; set; }
145
146                 [MonoTODO]
147                 public bool TransactionAutoCompleteOnSessionClose { get; set; }
148
149                 public Type Type { get; set; }
150
151                 public bool ValidateMustUnderstand { get; set; }
152 #endif
153
154                 public DispatchOperation UnhandledDispatchOperation { get; set; }
155         }
156 }