public void Connect() { // 查看有多少种连接 int j = 0; foreach (var cc in ConnectionConfigList) { // 建立多个连接 for (int i = 0; i < cc.SessionLimit; ++i) { XApi api = new XApi(cc.LibPath); api.Server = cc.Server; api.User = cc.User; api.Log = LogManager.GetLogger(string.Format("{0}.{1}.{2}.{3}", api.Server.BrokerID, api.User.UserID, j, i)); api.MaxSubscribedInstrumentsCount = cc.SubscribePerSession; api.OnConnectionStatus = OnConnectionStatus; api.OnRtnDepthMarketData = OnRtnDepthMarketData; api.Connect(); XApiList.Add(api); } ++j; } }
protected override void OnConnectionStatus(object sender, ConnectionStatus status, ref RspUserLoginField userLogin, int size1) { base.OnConnectionStatus(sender, status, ref userLogin, size1); // 修改成只处理最后一个,因为一般情况下,最后一个其它事件也是最后到来 if (sender == XApiList.Last()) { // 由于配置中肯定会设置多个行情连接,所有 if (status == ConnectionStatus.Logined) { TradingDay = userLogin.TradingDay; SaveAsTradingDay(); if (null != KdbWriter) { KdbWriter.SetTradingDay(TradingDay); } } else if (status == ConnectionStatus.Disconnected) { // 断开连接,可加入一接断开连接时的保存指令,由于连接数多,5秒之内不重复保存 if (null != KdbWriter) { Log.Info("OnConnectionStatus 中被动进行保存"); KdbWriter.Save(TradingDay); } } } }
public void Connect() { XApi api = new XApi(ConnectionConfig.LibPath); api.Server = ConnectionConfig.Server; api.User = ConnectionConfig.User; api.Log = LogManager.GetLogger(string.Format("{0}.{1}", api.Server.BrokerID, api.User.UserID)); api.MaxSubscribedInstrumentsCount = ConnectionConfig.SubscribePerSession; api.OnConnectionStatus = OnConnectionStatus; api.OnRspQryInstrument = OnRspQryInstrument; api.Connect(); XApiList.Add(api); }