private ITestInterface GetInvocationHelper(ReturnPolicy returnPolicy = ReturnPolicy.TwoWay) { RemoteExecutionPolicies policies = new RemoteExecutionPolicies(typeof(ITestInterface), returnPolicy); var subject = new RemoteCallInterceptor(_oneWayInterceptor, _twoWayInterceptor, policies); return((ITestInterface) new ProxyFactory(typeof(ITestInterface), subject).GetProxy()); }
/// <summary> /// Populates dictionary with policies for a given interface. /// </summary> /// <param name="interfaceType"></param> /// <param name="defaultNoResultsMethodExecution"></param> public RemoteExecutionPolicies(Type interfaceType, ReturnPolicy defaultNoResultsMethodExecution) { if (interfaceType == null) { throw new ArgumentNullException(nameof(interfaceType)); } RemoteExecutionPolicy defaultPolicy = interfaceType.GetInterfaceDefaultPolicy(defaultNoResultsMethodExecution); AddMethodsForInterface(interfaceType, defaultPolicy); }
public T Create <T>(ReturnPolicy noResultMethodExcecution) { RemoteExecutionPolicies policies = new RemoteExecutionPolicies(typeof(T), noResultMethodExcecution); var remoteCallInterceptor = new RemoteCallInterceptor( new OneWayRemoteCallInterceptor(_channel, _messageFactory, typeof(T).Name), new TwoWayRemoteCallInterceptor(_channel, _dispatcher, _messageFactory, typeof(T).Name, policies), policies); var factory = new ProxyFactory(typeof(T), remoteCallInterceptor); return((T)factory.GetProxy()); }
/// <summary> /// Gets the default remote execution policy for an interface. /// </summary> /// <param name="me"></param> /// <param name="defaultNoResultsMethodExecution"></param> /// <returns></returns> public static RemoteExecutionPolicy GetInterfaceDefaultPolicy(this Type me, ReturnPolicy defaultNoResultsMethodExecution) { if (me == null) { throw new ArgumentNullException(nameof(me)); } if (!me.IsInterface) { throw new InvalidOperationException("Type must be an interface."); } var timeoutPolicy = me.GetAttributeOrDefault <TimeoutPolicyAttribute>(); var durablePolicy = me.GetAttributeOrDefault <DurablePolicyAttribute>(); var ipPolicy = me.GetAttributeOrDefault <IpEndPointPolicyAttribute>(); var returnPolicy = me.GetAttributeOrDefault <ForcedReturnPolicyAttribute>(); var ans = me.GetAttributeOrDefault <RemoteExecutionPolicy>()?.Clone() ?? new RemoteExecutionPolicy { Timeout = DefaultConfig.Timeout, NoRetries = DefaultConfig.NoRetries, TimeoutIsStrict = DefaultConfig.TimeoutIsStrict, RequiresIpEndPoint = DefaultConfig.RequiresIpEndpoint, DefaultReturnPolicy = defaultNoResultsMethodExecution, ForcedReturnPolicy = null }; ans.DefaultReturnPolicy = defaultNoResultsMethodExecution; if (timeoutPolicy != null) { ans.Timeout = timeoutPolicy.Timeout; } if (durablePolicy != null) { ans.NoRetries = durablePolicy.NoRetries; ans.TimeoutIsStrict = durablePolicy.TimeoutIsStrict; } if (ipPolicy != null) { ans.RequiresIpEndPoint = ipPolicy.Required; } if (returnPolicy != null) { ans.ForcedReturnPolicy = returnPolicy.ForcedReturnPolicy; } return(ans); }
public ActionResult getRetrunPolicys() { ReturnPolicy _returnPolicy = new ReturnPolicy(); _returnPolicy.ReturnPolicyContent = _newsService.GetReturnPolicyAll(HCRGUser != null ? HCRGUser.OrganizationID : (Convert.ToInt32(_encryptionService.DecryptString2(System.Configuration.ConfigurationManager.AppSettings["OrganizationID"])))).ReturnPolicyContent; string decodedHTML = HttpUtility.HtmlDecode(_returnPolicy.ReturnPolicyContent); if (decodedHTML != null) { _returnPolicy.ReturnPolicyContent = decodedHTML.Replace(GlobalConst.Message.SlashStoragePath, GlobalConst.Message.StoragePath); _returnPolicy.ReturnPolicyContent = _returnPolicy.ReturnPolicyContent.Replace("/richtexteditor/", GlobalConst.Extension.http + GlobalConst.ConstantChar.Colon + GlobalConst.ConstantChar.ForwardSlash + GlobalConst.ConstantChar.ForwardSlash + Request.Url.Host.ToLower() + GlobalConst.ConstantChar.Colon + Request.Url.Port + "/richtexteditor/"); _returnPolicy.ReturnPolicyContent = _returnPolicy.ReturnPolicyContent.Replace(" ", ""); } else { _returnPolicy.ReturnPolicyContent = _returnPolicy.ReturnPolicyContent; } return(Json(_returnPolicy, GlobalConst.Message.text_html)); }
public void Should_defer_execute_operations_returning_result_to_attribute_one_way_2(ReturnPolicy executionMode) { GetInvocationHelper(executionMode).IgnoreHello(5); _oneWayInterceptor.AssertWasCalled(i => i.Invoke(Arg <IMethodInvocation> .Is.Anything)); _twoWayInterceptor.AssertWasNotCalled(i => i.Invoke(Arg <IMethodInvocation> .Is.Anything)); }
public void Should_always_execute_operations_returning_result_as_two_way(ReturnPolicy executionMode) { GetInvocationHelper(executionMode).Hello(5); _twoWayInterceptor.AssertWasCalled(i => i.Invoke(Arg <IMethodInvocation> .Is.Anything)); _oneWayInterceptor.AssertWasNotCalled(i => i.Invoke(Arg <IMethodInvocation> .Is.Anything)); }
/// <summary> /// Basic constructor. /// </summary> /// <param name="policy"></param> public ForcedReturnPolicyAttribute(ReturnPolicy policy) { ForcedReturnPolicy = policy; }