bool serialize_reply = true, deserialize_request = true,
is_oneway, is_terminating,
release_after_call, release_before_call,
- tx_auto_complete, tx_required;
+ tx_auto_complete, tx_required,
+ auto_dispose_params = true;
ImpersonationOption impersonation;
IDispatchMessageFormatter formatter, actual_formatter;
IOperationInvoker invoker;
get { return ctx_initializers; }
}
+ public bool AutoDisposeParameters {
+ get { return auto_dispose_params; }
+ set { auto_dispose_params = value; }
+ }
+
public bool DeserializeRequest {
get { return deserialize_request; }
set { deserialize_request = value; }
// Author:
// Atsushi Enomoto <atsushi@ximian.com>
//
-// Copyright (C) 2006 Novell, Inc. http://www.novell.com
+// Copyright (C) 2006,2009 Novell, Inc. http://www.novell.com
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
+using System.Transactions;
namespace System.ServiceModel
{
- [MonoTODO]
[AttributeUsage (AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute,
IEndpointBehavior
{
- bool shutdown, ignore_ext, return_unknown_as_faults,
- use_sync_context, validate_must_understand;
- ConcurrencyMode concurrency;
-
- public bool AutomaticSessionShutdown {
- get { return shutdown; }
- set { shutdown = value; }
+ public CallbackBehaviorAttribute ()
+ {
+ AutomaticSessionShutdown = true;
+ ConcurrencyMode = ConcurrencyMode.Single;
+ // LAMESPEC: it is documented as int.MaxValue, but wrong.
+ MaxItemsInObjectGraph = 0x10000;
+ UseSynchronizationContext = true;
+ ValidateMustUnderstand = true;
}
- public ConcurrencyMode ConcurrencyMode {
- get { return concurrency; }
- set { concurrency = value; }
- }
+ [MonoTODO]
+ public bool AutomaticSessionShutdown { get; set; }
- public bool IgnoreExtensionDataObject {
- get { return ignore_ext; }
- set { ignore_ext = value; }
- }
+ [MonoTODO]
+ public ConcurrencyMode ConcurrencyMode { get; set; }
- public bool ReturnUnknownExceptionsAsFaults {
- get { return return_unknown_as_faults; }
- set { return_unknown_as_faults = value; }
- }
+ [MonoTODO]
+ public bool IgnoreExtensionDataObject { get; set; }
- public bool UseSynchronizationContext {
- get { return use_sync_context; }
- set { use_sync_context = value; }
- }
+ [MonoTODO]
+ public bool IncludeExceptionDetailInFaults { get; set; }
- public bool ValidateMustUnderstand {
- get { return validate_must_understand; }
- set { validate_must_understand = value; }
- }
+ [MonoTODO]
+ public int MaxItemsInObjectGraph { get; set; }
+
+ [MonoTODO]
+ public IsolationLevel TransactionIsolationLevel { get; set; }
+
+ [MonoTODO]
+ public string TransactionTimeout { get; set; }
+
+ [MonoTODO]
+ public bool UseSynchronizationContext { get; set; }
+
+ [MonoTODO]
+ public bool ValidateMustUnderstand { get; set; }
void IEndpointBehavior.AddBindingParameters (
ServiceEndpoint endpoint,
BindingParameterCollection parameters)
{
- throw new NotImplementedException ();
}
+ [MonoTODO]
void IEndpointBehavior.ApplyDispatchBehavior (
ServiceEndpoint serviceEndpoint,
EndpointDispatcher dispatcher)
throw new NotImplementedException ();
}
+ [MonoTODO]
void IEndpointBehavior.ApplyClientBehavior (
ServiceEndpoint serviceEndpoint,
ClientRuntime behavior)
throw new NotImplementedException ();
}
+ [MonoTODO]
void IEndpointBehavior.Validate (
ServiceEndpoint serviceEndpoint)
{
IOperationBehavior
{
ImpersonationOption impersonation;
- bool tx_auto_complete, tx_scope_required;
+ bool tx_auto_complete, tx_scope_required, auto_dispose_params = true;
ReleaseInstanceMode mode;
+ public bool AutoDisposeParameters {
+ get { return auto_dispose_params; }
+ set { auto_dispose_params = value; }
+ }
+
public ImpersonationOption Impersonation {
get { return impersonation; }
set { impersonation = value; }
OperationDescription description,
DispatchOperation dispatch)
{
+ dispatch.AutoDisposeParameters = auto_dispose_params;
dispatch.Impersonation = impersonation;
dispatch.ReleaseInstanceBeforeCall =
mode == ReleaseInstanceMode.BeforeCall ||