/// <summary> /// 分发商品期货成交回报方法 /// Create by 董鹏 2010-01-22 /// </summary> /// <param name="sender">事件对象</param> /// <param name="e">事件参数</param> private void DispatchCommoditiesProcess(object sender, QueueItemHandleEventArg <CommoditiesDealBackEntity> e) { //撮合中心委托回报为空判断 if (e.Item == null) { LogHelper.WriteDebug("委托回报不能为空"); } try { QueueBufferBase <CommoditiesDealBackEntity> bufferDeal = null; foreach (var queueBufferBase in CommoditiesDealList) { if (bufferDeal == null || queueBufferBase.BufferedItemCount < bufferDeal.BufferedItemCount) { bufferDeal = queueBufferBase; } } //撮合中心委托回报失败 if (bufferDeal == null) { LogHelper.WriteDebug("委托回报中心.DispatchStockProcess无法找到回报队列,委托回报失败."); return; } bufferDeal.InsertQueueItem(e.Item); } //撮合中心委托回报异常 catch (Exception ex) { LogHelper.WriteError(GenerateInfo.CH_E004, ex); return; } }
/// <summary> /// 分发港股成交回报方法 /// </summary> /// <param name="sender">对象</param> /// <param name="e">参数</param> private void DispatchHKStockProcess(object sender, QueueItemHandleEventArg <HKDealBackEntity> e) { #region 要求实现港股委托成交回报 if (e.Item == null) { LogHelper.WriteDebug("委托回报不能为空"); } try { QueueBufferBase <HKDealBackEntity> bufferDeal = null; foreach (var queueBufferBase in HKDealList) { if (bufferDeal == null || queueBufferBase.BufferedItemCount < bufferDeal.BufferedItemCount) { bufferDeal = queueBufferBase; } } //委托回报失败 if (bufferDeal == null) { LogHelper.WriteDebug("委托回报中心.DispatchStockProcess无法找到回报队列,委托回报失败."); return; } bufferDeal.InsertQueueItem(e.Item); } //委托回报分发异常 catch (Exception ex) { string strMessage = "CH-2000:[委托回报分发异常]" + ex.Message; LogHelper.WriteError(strMessage, ex); return; } #endregion }
/// <summary> /// 港股改单接口 /// </summary> /// <param name="sender">对象</param> /// <param name="e">参数</param> private void ProcessHKModify(object sender, QueueItemHandleEventArg <HKModifyBackEntity> e) { OperationContext context = null; //实体通道不能为空 if (e.Item.ChannelNo != null) { context = MatchCenterManager.Instance.OperationContexts[e.Item.ChannelNo]; } //撮合中心上下文不能为空 if (context == null) { return; } try { //获取撮合中心通道 var callback = context.GetCallbackChannel <IDoOrderCallback>(); if (callback != null) { //撤单处理 callback.ModifyHKStockOrderRpt(e.Item); } } catch (Exception ex) { // LogHelper.WriteError("CH-0001:wcf服务通道阻塞", ex); LogHelper.WriteError(GenerateInfo.CH_E001, ex); TradePushBackImpl.Instanse.SaveModifyBack(e.Item); return; } }
/// <summary> /// 撮合中心缓冲数据 /// Create by 董鹏 2010-01-22 /// </summary> /// <param name="sender">对象</param> /// <param name="e">参数</param> private void ProcessCommoditiesBussiness(object sender, QueueItemHandleEventArg <CommoditiesDealBackEntity> e) { if (e.Item == null) { return; } ProcessCommoditiesStock(e.Item); }
/// <summary> /// 缓冲数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessHKBussiness(object sender, QueueItemHandleEventArg <HKDealBackEntity> e) { if (e.Item == null) { return; } ProcessHKStock(e.Item); }
/// <summary> /// 缓冲数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProcessBussiness(object sender, QueueItemHandleEventArg <StockDealEntity> e) { if (e.Item == null) { return; } ProcessStock(e.Item); }
private void ExternalMessageQueue_QueueItemProcessEvent(object sender, QueueItemHandleEventArg <object> e) { bool isLastMessage = InternalInsertMessage(e.Item); //最后一个消息时,马上进行清算,不再等待计时 if (isLastMessage) { LogHelper.WriteInfo("InternalInsertMessage最后一个消息,马上进行清算[EntrustNumber=" + EntrustNumber + "]"); DoReckonCommitCheck(this, EventArgs.Empty); } }
/// <summary> /// 撤单方法 /// </summary> /// <param name="sender">对象</param> /// <param name="e">参数</param> private void ProcessCommoditiesCancel(object sender, QueueItemHandleEventArg <CancelEntity> e) { CancelOrder(e.Item); }
/// <summary> /// 撮合中心改单 /// </summary> /// <param name="sender">对象</param> /// <param name="e">参数</param> private void ProcessModify(object sender, QueueItemHandleEventArg <HKModifyEntity> e) { ModifyOrder(e.Item); }