| 337 | } |
| 338 | |
| 339 | fl::span<const DriverInfo> ChannelManager::getDriverInfos() const { |
| 340 | // Update cache with current driver state |
| 341 | mCachedDriverInfo.clear(); |
| 342 | mCachedDriverInfo.reserve(mDrivers.size()); |
| 343 | |
| 344 | for (const auto& entry : mDrivers) { |
| 345 | // fl::string copy is cheap (shared pointer internally, no heap allocation) |
| 346 | mCachedDriverInfo.push_back({ |
| 347 | entry.name, |
| 348 | entry.priority, |
| 349 | entry.enabled |
| 350 | }); |
| 351 | } |
| 352 | |
| 353 | return mCachedDriverInfo; |
| 354 | } |
| 355 | |
| 356 | fl::shared_ptr<IChannelDriver> ChannelManager::findDriverByName(const fl::string& name) const { |
| 357 | if (name.empty()) { |
no test coverage detected