Ejemplo n.º 1
0
        // **********************************************************************

        public QshReaderImpl(FileStream fs, Stream ds)
            : base(fs)
        {
            dr = new DataReader(ds);

            AppName     = dr.ReadString();
            Comment     = dr.ReadString();
            RecDateTime = new DateTime(dr.ReadInt64(), DateTimeKind.Utc);

            lastMilliseconds = DateTimeHelper.ToMs(RecDateTime);

            int streamCount = dr.ReadByte();

            if (streamCount == 0)
            {
                throw new Exception("Нет потоков данных");
            }

            streams = new QshStream[streamCount];

            for (int i = 0; i < streams.Length; i++)
            {
                StreamType st = (StreamType)dr.ReadByte();

                switch (st)
                {
                case StreamType.Quotes:
                    streams[i] = new QuotesStream(dr);
                    break;

                case StreamType.Deals:
                    streams[i] = new DealsStream(dr);
                    break;

                case StreamType.OwnOrders:
                    streams[i] = new OwnOrdersStream(dr);
                    break;

                case StreamType.OwnTrades:
                    streams[i] = new OwnTradesStream(dr);
                    break;

                case StreamType.Messages:
                    streams[i] = new MessagesStream(dr);
                    break;

                case StreamType.AuxInfo:
                    streams[i] = new AuxInfoStream(dr);
                    break;

                case StreamType.OrdLog:
                    streams[i] = new OrdLogStream(dr);
                    break;

                default:
                    throw new FormatException("Неизвестный тип данных: " + st);
                }
            }

            if (streams.Length == 1)
            {
                currentStream = streams[0];
            }

            ReadNextRecordHeader();
        }
    // **********************************************************************

    public QshReaderImpl(FileStream fs, Stream ds)
      : base(fs)
    {
      dr = new DataReader(ds);

      AppName = dr.ReadString();
      Comment = dr.ReadString();
      RecDateTime = new DateTime(dr.ReadInt64(), DateTimeKind.Utc);

      lastMilliseconds = DateTimeHelper.ToMs(RecDateTime);

      int streamCount = dr.ReadByte();

      if(streamCount == 0)
        throw new Exception("Нет потоков данных");

      streams = new QshStream[streamCount];

      for(int i = 0; i < streams.Length; i++)
      {
        StreamType st = (StreamType)dr.ReadByte();

        switch(st)
        {
          case StreamType.Stock:
            streams[i] = new StockStream(dr);
            break;

          case StreamType.Deals:
            streams[i] = new DealsStream(dr);
            break;

          case StreamType.Orders:
            streams[i] = new OrdersStream(dr);
            break;

          case StreamType.Trades:
            streams[i] = new TradesStream(dr);
            break;

          case StreamType.Messages:
            streams[i] = new MessagesStream(dr);
            break;

          case StreamType.AuxInfo:
            streams[i] = new AuxInfoStream(dr);
            break;

          case StreamType.OrdLog:
            streams[i] = new OrdLogStream(dr);
            break;

          default:
            throw new FormatException("Неизвестный тип данных: " + st);
        }
      }

      if(streams.Length == 1)
        currentStream = streams[0];

      ReadNextRecordHeader();
    }