public ConfirmResult Confirm(int instrumentId, int confirmId, bool accepted)
 {
     ConfirmResult confirmResult = new ConfirmResult() { Confirmed = false };
     AbnormalInstrument abnormalInstrument;
     if (this._AbnormalInstruments.TryGetValue(instrumentId, out abnormalInstrument))
     {
         abnormalInstrument.Confirm(confirmId, accepted, confirmResult);
     }
     else
     {
         Logger.AddEvent(TraceEventType.Warning, "AbnormalQuotationManager.Confirm Cannot find wait queue for instrumentId={0}", instrumentId);
     }
     return confirmResult;
 }
        public void Confirm(int confirmId, bool accepted, ConfirmResult confirmResult)
        {
            this._TimeoutCount = 0;
            lock (this._WaitQueue)
            {
                if (this._WaitQueue.Any(q => q.ConfirmId == confirmId))
                {
                    while (this._WaitQueue.Peek().ConfirmId != confirmId)
                    {
                        // Discard quotations before ConfirmId == confirmId
                        this._WaitQueue.Dequeue();
                    }
                    SourceQuotation confirmedQuotation = this._WaitQueue.Dequeue();
                    MainService.ExchangeManager.SwitchPriceEnableState(confirmedQuotation.InstrumentId, true);
                    if (accepted)
                    {
                        MainService.QuotationManager.ProcessNormalQuotation(confirmedQuotation);
                    }

                    confirmResult.Confirmed = true;
                    confirmResult.SourceQuotation = confirmedQuotation;

                    this.ProcessSubsequentQuotation();
                    Logger.AddEvent(TraceEventType.Information, "[AbnormalInstrument.Confirm] Confirmed. confirmId:{0}, accepted:{1}", confirmId, accepted);
                }
                else
                {
                    // quotation already timeout, do nothing.
                    Logger.AddEvent(TraceEventType.Information, "[AbnormalInstrument.Confirm] quotation already timeout, do nothing. confirmId:{0}, accepted:{1}", confirmId, accepted);
                }
            }
        }