| 90 | } |
| 91 | |
| 92 | fn poll_inner(&mut self, cx: &mut Context<'_>) -> Poll<Option<Result<RecordBatch>>> { |
| 93 | loop { |
| 94 | match &mut self.state { |
| 95 | FileStreamState::Scan { scan_state: queue } => { |
| 96 | let action = queue.poll_scan(cx); |
| 97 | match action { |
| 98 | ScanAndReturn::Continue => continue, |
| 99 | ScanAndReturn::Done(result) => { |
| 100 | self.state = FileStreamState::Done; |
| 101 | return Poll::Ready(result); |
| 102 | } |
| 103 | ScanAndReturn::Error(err) => { |
| 104 | self.state = FileStreamState::Error; |
| 105 | return Poll::Ready(Some(Err(err))); |
| 106 | } |
| 107 | ScanAndReturn::Return(result) => return result, |
| 108 | } |
| 109 | } |
| 110 | FileStreamState::Error | FileStreamState::Done => { |
| 111 | return Poll::Ready(None); |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | impl Stream for FileStream { |