protected Hashtable CreateWriterMap()
        {
            Hashtable result = new Hashtable();
            Writer    w1     = new OnePassWriter(this);
            Writer    w2     = new FixWriter(this);
            Writer    w3     = new HeapWriterWithTempTable(this);
            Writer    w4     = new HeapWriter(this);
            Writer    w5     = new HeapWriterWithTempTable(this);
            Writer    w6     = new PadWriter(this);

            // have nrows, have strings, destination seekable, write mode
            result.Add(new Config(true, true, true, StringWriteMode.TRUNCATE), w1);
            result.Add(new Config(true, true, true, StringWriteMode.HEAP), w4);
            result.Add(new Config(true, true, true, StringWriteMode.PAD), w6);
            result.Add(new Config(true, true, false, StringWriteMode.TRUNCATE), w1);
            result.Add(new Config(true, true, false, StringWriteMode.HEAP), w5);
            result.Add(new Config(true, true, false, StringWriteMode.PAD), w6);

            result.Add(new Config(true, false, true, StringWriteMode.TRUNCATE), w1);
            result.Add(new Config(true, false, true, StringWriteMode.HEAP), w1);
            result.Add(new Config(true, false, true, StringWriteMode.PAD), w1);
            result.Add(new Config(true, false, false, StringWriteMode.TRUNCATE), w1);
            result.Add(new Config(true, false, false, StringWriteMode.HEAP), w1);
            result.Add(new Config(true, false, false, StringWriteMode.PAD), w1);

            result.Add(new Config(false, true, true, StringWriteMode.TRUNCATE), w2);
            result.Add(new Config(false, true, true, StringWriteMode.HEAP), w4);
            result.Add(new Config(false, true, true, StringWriteMode.PAD), w6);
            result.Add(new Config(false, true, false, StringWriteMode.TRUNCATE), w3);
            result.Add(new Config(false, true, false, StringWriteMode.HEAP), w5);
            result.Add(new Config(false, true, false, StringWriteMode.PAD), w6);

            result.Add(new Config(false, false, true, StringWriteMode.TRUNCATE), w2);
            result.Add(new Config(false, false, true, StringWriteMode.HEAP), w2);
            result.Add(new Config(false, false, true, StringWriteMode.PAD), w2);
            result.Add(new Config(false, false, false, StringWriteMode.TRUNCATE), w3);
            result.Add(new Config(false, false, false, StringWriteMode.HEAP), w3);
            result.Add(new Config(false, false, false, StringWriteMode.PAD), w3);

            return(result);
        }
示例#2
0
        protected Hashtable CreateWriterMap()
        {
            Hashtable result = new Hashtable();
              Writer w1 = new OnePassWriter(this);
              Writer w2 = new FixWriter(this);
              Writer w3 = new HeapWriterWithTempTable(this);
              Writer w4 = new HeapWriter(this);
              Writer w5 = new HeapWriterWithTempTable(this);
              Writer w6 = new PadWriter(this);

              // have nrows, have strings, destination seekable, write mode
              result.Add(new Config(true, true, true, StringWriteMode.TRUNCATE), w1);
              result.Add(new Config(true, true, true, StringWriteMode.HEAP), w4);
              result.Add(new Config(true, true, true, StringWriteMode.PAD), w6);
              result.Add(new Config(true, true, false, StringWriteMode.TRUNCATE), w1);
              result.Add(new Config(true, true, false, StringWriteMode.HEAP), w5);
              result.Add(new Config(true, true, false, StringWriteMode.PAD), w6);

              result.Add(new Config(true, false, true, StringWriteMode.TRUNCATE), w1);
              result.Add(new Config(true, false, true, StringWriteMode.HEAP), w1);
              result.Add(new Config(true, false, true, StringWriteMode.PAD), w1);
              result.Add(new Config(true, false, false, StringWriteMode.TRUNCATE), w1);
              result.Add(new Config(true, false, false, StringWriteMode.HEAP), w1);
              result.Add(new Config(true, false, false, StringWriteMode.PAD), w1);

              result.Add(new Config(false, true, true, StringWriteMode.TRUNCATE), w2);
              result.Add(new Config(false, true, true, StringWriteMode.HEAP), w4);
              result.Add(new Config(false, true, true, StringWriteMode.PAD), w6);
              result.Add(new Config(false, true, false, StringWriteMode.TRUNCATE), w3);
              result.Add(new Config(false, true, false, StringWriteMode.HEAP), w5);
              result.Add(new Config(false, true, false, StringWriteMode.PAD), w6);

              result.Add(new Config(false, false, true, StringWriteMode.TRUNCATE), w2);
              result.Add(new Config(false, false, true, StringWriteMode.HEAP), w2);
              result.Add(new Config(false, false, true, StringWriteMode.PAD), w2);
              result.Add(new Config(false, false, false, StringWriteMode.TRUNCATE), w3);
              result.Add(new Config(false, false, false, StringWriteMode.HEAP), w3);
              result.Add(new Config(false, false, false, StringWriteMode.PAD), w3);

              return result;
        }
        /// <summary>
        /// Отправить данные по условию заявки.
        /// </summary>
        /// <param name="writer">Писатель FIX данных.</param>
        /// <param name="regMsg">Сообщение, содержащее информацию для регистрации заявки.</param>
        protected override void SendFixOrderCondition(FixWriter writer, OrderRegisterMessage regMsg)
        {
            var condition = (QuikOrderCondition)regMsg.Condition;

            if (condition.Type != null)
            {
                writer.Write((FixTags)QuikFixTags.Type);
                writer.Write((int)condition.Type.Value);
            }

            if (condition.StopPriceCondition != null)
            {
                writer.Write((FixTags)QuikFixTags.StopPriceCondition);
                writer.Write((int)condition.StopPriceCondition.Value);
            }

            if (condition.ConditionOrderSide != null)
            {
                writer.Write((FixTags)QuikFixTags.ConditionOrderSide);
                writer.Write((int)condition.ConditionOrderSide.Value);
            }

            if (condition.LinkedOrderCancel != null)
            {
                writer.Write((FixTags)QuikFixTags.LinkedOrderCancel);
                writer.Write(condition.LinkedOrderCancel.Value);
            }

            if (condition.Result != null)
            {
                writer.Write((FixTags)QuikFixTags.Result);
                writer.Write((int)condition.Result.Value);
            }

            if (condition.OtherSecurityId != null)
            {
                writer.Write((FixTags)QuikFixTags.OtherSecurityCode);
                writer.Write(condition.OtherSecurityId.Value.SecurityCode);
            }

            if (condition.StopPrice != null)
            {
                writer.Write((FixTags)QuikFixTags.StopPrice);
                writer.Write(condition.StopPrice.Value);
            }

            if (condition.StopLimitPrice != null)
            {
                writer.Write((FixTags)QuikFixTags.StopLimitPrice);
                writer.Write(condition.StopLimitPrice.Value);
            }

            if (condition.IsMarketStopLimit != null)
            {
                writer.Write((FixTags)QuikFixTags.IsMarketStopLimit);
                writer.Write(condition.IsMarketStopLimit.Value);
            }

            if (condition.ActiveTime != null)
            {
                writer.Write((FixTags)QuikFixTags.ActiveTimeFrom);
                writer.Write(condition.ActiveTime.Min.UtcDateTime);

                writer.Write((FixTags)QuikFixTags.ActiveTimeTo);
                writer.Write(condition.ActiveTime.Max.UtcDateTime);
            }

            if (condition.ConditionOrderId != null)
            {
                writer.Write((FixTags)QuikFixTags.ConditionOrderId);
                writer.Write(condition.ConditionOrderId.Value);
            }

            if (condition.ConditionOrderPartiallyMatched != null)
            {
                writer.Write((FixTags)QuikFixTags.ConditionOrderPartiallyMatched);
                writer.Write(condition.ConditionOrderPartiallyMatched.Value);
            }

            if (condition.ConditionOrderUseMatchedBalance != null)
            {
                writer.Write((FixTags)QuikFixTags.ConditionOrderUseMatchedBalance);
                writer.Write(condition.ConditionOrderUseMatchedBalance.Value);
            }

            if (condition.LinkedOrderPrice != null)
            {
                writer.Write((FixTags)QuikFixTags.LinkedOrderPrice);
                writer.Write(condition.LinkedOrderPrice.Value);
            }

            if (condition.Offset != null)
            {
                writer.Write((FixTags)QuikFixTags.Offset);
                writer.Write(condition.Offset.ToString());
            }

            if (condition.Spread != null)
            {
                writer.Write((FixTags)QuikFixTags.StopSpread);
                writer.Write(condition.Spread.ToString());
            }

            if (condition.IsMarketTakeProfit != null)
            {
                writer.Write((FixTags)QuikFixTags.IsMarketTakeProfit);
                writer.Write(condition.IsMarketTakeProfit.Value);
            }
        }