/// <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);
            }
        }
Exemplo n.º 8
0
 /// <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);
 }