| 273 | } |
| 274 | |
| 275 | void DataSourceRuntimeHost::flushAll() { |
| 276 | if (flushed_) { |
| 277 | return; |
| 278 | } |
| 279 | flushed_ = true; |
| 280 | source_write_host_.flushPending(); |
| 281 | // Each parser binding owns its own DatastoreParserWriteHost / DataWriter |
| 282 | // pair — their open chunks are independent from the source's. Without this |
| 283 | // their pending rows never reach the reader, so the catalog sees the |
| 284 | // column descriptors but bounds()/samples() return nothing and curves |
| 285 | // drop in with empty plots. |
| 286 | for (auto& [binding_id, binding] : parser_bindings_) { |
| 287 | if (binding.write_host != nullptr) { |
| 288 | binding.write_host->flushPending(); |
| 289 | } |
| 290 | } |
| 291 | } |
| 292 | |
| 293 | void DataSourceRuntimeHost::flushPending() { |
| 294 | source_write_host_.flushPending(); |