代码拉取完成,页面将自动刷新
同步操作将从 yu3a/StockSharp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
namespace StockSharp.Algo
{
using System;
using System.Collections.Generic;
using System.Linq;
using Ecng.Common;
using StockSharp.Algo.Storages;
using StockSharp.Messages;
/// <summary>
/// The message adapter, that save <see cref="Message.ExtensionInfo"/> into <see cref="IExtendedInfoStorage"/>.
/// </summary>
public class ExtendedInfoStorageMessageAdapter : MessageAdapterWrapper
{
private readonly IExtendedInfoStorage _extendedInfoStorage;
private readonly string _storageName;
private readonly IEnumerable<Tuple<string, Type>> _fields;
/// <summary>
/// Initializes a new instance of the <see cref="MessageAdapterWrapper"/>.
/// </summary>
/// <param name="innerAdapter">Underlying adapter.</param>
/// <param name="extendedInfoStorage">Extended info <see cref="Message.ExtensionInfo"/> storage.</param>
public ExtendedInfoStorageMessageAdapter(IMessageAdapter innerAdapter, IExtendedInfoStorage extendedInfoStorage)
: base(innerAdapter)
{
if (InnerAdapter.StorageName.IsEmpty())
throw new ArgumentException(nameof(innerAdapter));
_extendedInfoStorage = extendedInfoStorage ?? throw new ArgumentNullException(nameof(extendedInfoStorage));
_storageName = InnerAdapter.StorageName;
_fields = InnerAdapter.SecurityExtendedFields.ToArray();
}
private readonly SyncObject _sync = new SyncObject();
private IExtendedInfoStorageItem _storage;
private IExtendedInfoStorageItem GetStorage()
{
if (_storage == null)
{
lock (_sync)
{
if (_storage == null)
_storage = _extendedInfoStorage.Create(_storageName, _fields);
}
}
return _storage;
}
/// <inheritdoc />
protected override void OnInnerAdapterNewOutMessage(Message message)
{
var secMsg = message as SecurityMessage;
if (secMsg?.ExtensionInfo != null)
GetStorage().Add(secMsg.SecurityId, secMsg.ExtensionInfo);
base.OnInnerAdapterNewOutMessage(message);
}
/// <summary>
/// Create a copy of <see cref="ExtendedInfoStorageMessageAdapter"/>.
/// </summary>
/// <returns>Copy.</returns>
public override IMessageChannel Clone()
{
return new ExtendedInfoStorageMessageAdapter(InnerAdapter.TypedClone(), _extendedInfoStorage);
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。