connector.InitializeStorage(csvEntityRegistry, storageRegistry); пересозадает BasketMessageAdapter
если воспользоваться методом инициализации хранилища у трейдера
Код
connector.InitializeStorage(csvEntityRegistry, storageRegistry);
То согласно исходникам
https://github.com/Stock...da037/Algo/Connector.cs
пересозадастся BasketMessageAdapter Adapter
Код
/// <summary>
/// Initialize <see cref="StorageAdapter"/>.
/// </summary>
/// <param name="entityRegistry">The storage of trade objects.</param>
/// <param name="storageRegistry">The storage of market data.</param>
public void InitializeStorage(IEntityRegistry entityRegistry, IStorageRegistry storageRegistry)
{
if (entityRegistry == null)
throw new ArgumentNullException(nameof(entityRegistry));
if (storageRegistry == null)
throw new ArgumentNullException(nameof(storageRegistry));
_entityRegistry = entityRegistry;
_storageRegistry = storageRegistry;
InitAdapter();//<--------------------------- ТУТ
_entityCache.ExchangeInfoProvider = storageRegistry.ExchangeInfoProvider;
}
private void InitAdapter()
{
Adapter = new BasketMessageAdapter(new MillisecondIncrementalIdGenerator());<--------------------------- ТУТ
}
Поэтому если у коннектора уже были настроены адаптеры он их затрет, и соответственно подключение работать не будет. Такое поведение не очевидно, если не ковырять исходники можно долго гадать почему нет подключения к терминалам.
Примеры
так работает
Код
var connector = new Connector();
connector.InitializeStorage(entityRegistry, storageRegistry);
connector.Load(new XmlSerializer<SettingsStorage>().Deserialize(ConnectorFile));
так не работает
Код
var connector = new Connector();
connector.Load(new XmlSerializer<SettingsStorage>().Deserialize(ConnectorFile));
connector.InitializeStorage(entityRegistry, storageRegistry);
Больше на баг похоже чем на фичу