/// <summary> /// /// </summary> /// <param name="state"></param> /// <returns></returns> protected override bool _IsReady(BinaryBState state) => Overlap(state);
private bool Overlap(BinaryBState state) { return(Left.IsReady(state.left) && Right.IsReady(state.right) && (Math.Max(Left.GetSyncTime(state.left), Right.GetSyncTime(state.right)) < Math.Min(Left.GetOtherTime(state.left), Right.GetOtherTime(state.right)))); }
/// <summary> /// /// </summary> /// <param name="state"></param> /// <returns></returns> protected override bool _IsDone(BinaryBState state) => Left.IsDone(state.left) || Right.IsDone(state.right);
/// <summary> /// /// </summary> /// <param name="state"></param> /// <returns></returns> protected override void ProcessNextItem(BinaryBState state) { }
/// <summary> /// /// </summary> /// <returns></returns> protected override long _GetOtherTime(BinaryBState state) => Math.Min(Left.GetOtherTime(state.left), Right.GetOtherTime(state.right));
/// <summary> /// /// </summary> /// <returns></returns> protected override long _GetSyncTime(BinaryBState state) => Math.Max(Left.GetSyncTime(state.left), Right.GetSyncTime(state.right));
/// <summary> /// /// </summary> /// <returns></returns> protected override TResult _GetPayload(BinaryBState state) => Joiner(Left.GetPayload(state.left), Right.GetPayload(state.right));