/// <summary> /// Whether an incoming message can interleave /// </summary> /// <param name="targetActivation"></param> /// <param name="incoming"></param> /// <returns></returns> public bool CanInterleave(ActivationData targetActivation, Message incoming) { bool canInterleave = catalog.CanInterleave(targetActivation.ActivationId, incoming) || incoming.IsAlwaysInterleave || targetActivation.Running == null || (targetActivation.Running.IsReadOnly && incoming.IsReadOnly); return(canInterleave); }
/// <summary> /// Whether an incoming message can interleave /// </summary> /// <param name="targetActivation"></param> /// <param name="incoming"></param> /// <returns></returns> public bool CanInterleave(ActivationData targetActivation, Message incoming) { bool canInterleave = incoming.IsAlwaysInterleave || targetActivation.Blocking == null || (targetActivation.Blocking.IsReadOnly && incoming.IsReadOnly) || (schedulingOptions.AllowCallChainReentrancy && targetActivation.ActivationId.Equals(incoming.SendingActivation)) || catalog.CanInterleave(targetActivation.ActivationId, incoming); return(canInterleave); }
/// <summary> /// Whether an incoming message can interleave /// </summary> /// <param name="targetActivation"></param> /// <param name="incoming"></param> /// <returns></returns> public bool CanInterleave(ActivationData targetActivation, Message incoming) { bool canInterleave = incoming.IsAlwaysInterleave || targetActivation.Running == null || (targetActivation.Running.IsReadOnly && incoming.IsReadOnly) || IsCallChainReentrancyAllowed(targetActivation, incoming) || catalog.CanInterleave(targetActivation.ActivationId, incoming); return(canInterleave); }
/// <summary> /// Whether an incoming message can interleave /// </summary> /// <param name="targetActivation"></param> /// <param name="incoming"></param> /// <returns></returns> public bool CanInterleave(ActivationData targetActivation, Message incoming) { bool canInterleave = incoming.IsAlwaysInterleave || targetActivation.Running == null || targetActivation.Running.IsReadOnly && incoming.IsReadOnly || schedulingOptions.AllowCallChainReentrancy && IsMessageACallChainLoop(incoming) || catalog.CanInterleave(targetActivation.ActivationId, incoming); return(canInterleave); }