예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected override bool _IsReady(BinaryBState state) => Overlap(state);
예제 #2
0
 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))));
 }
예제 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected override bool _IsDone(BinaryBState state) => Left.IsDone(state.left) || Right.IsDone(state.right);
예제 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected override void ProcessNextItem(BinaryBState state)
 {
 }
예제 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 protected override long _GetOtherTime(BinaryBState state)
 => Math.Min(Left.GetOtherTime(state.left), Right.GetOtherTime(state.right));
예제 #6
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 protected override long _GetSyncTime(BinaryBState state)
 => Math.Max(Left.GetSyncTime(state.left), Right.GetSyncTime(state.right));
예제 #7
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 protected override TResult _GetPayload(BinaryBState state)
 => Joiner(Left.GetPayload(state.left), Right.GetPayload(state.right));