| use crate::data::parser::{Ohlcv, Tick}; |
|
|
| pub enum DataRow { |
| Ohlc(Ohlcv), |
| TickData(Tick), |
| } |
|
|
| pub struct DataFeed { |
| pub symbol: String, |
| pub data: Vec<DataRow>, |
| cursor: usize, |
| } |
|
|
| impl DataFeed { |
| pub fn new(symbol: &str, data: Vec<DataRow>) -> Self { |
| Self { |
| symbol: symbol.to_string(), |
| data, |
| cursor: 0, |
| } |
| } |
|
|
| pub fn reset(&mut self) { |
| self.cursor = 0; |
| } |
|
|
| pub fn next(&mut self) -> Option<&DataRow> { |
| if self.cursor < self.data.len() { |
| let row = &self.data[self.cursor]; |
| self.cursor += 1; |
| Some(row) |
| } else { |
| None |
| } |
| } |
| |
| pub fn len(&self) -> usize { |
| self.data.len() |
| } |
| |
| pub fn is_empty(&self) -> bool { |
| self.data.is_empty() |
| } |
| } |
|
|