示例#1
0
 protected void SetSymbol(DZHSymbol symbol)
 {
     if ((currentSymbol == null) || (!currentSymbol.Equals(symbol)))
     {
         currentSymbol = symbol;
         OnSymbolChanged();
     }
 }
示例#2
0
        public List <DZHTick> RequestLastTicks(DZHSymbol symbol)
        {
            if (symbol.Equals(currentSymbol))
            {
                long pos = indexBuffer[symbol.Market][symbol.Code];
                fileStream.Position = pos + 10;
                recordCount         = reader.ReadInt32();
                if (recordCount > recordCountReaded)//有新记录
                {
                    int recordsPerBlock = dataBlockSize / dataRecordSize;
                    if (recordCount / recordsPerBlock > blockNumberReaded)//有新块号
                    {
                        fileStream.Position += blockNumberReaded * 2;
                        for (int j = blockNumberReaded; j < 25; j++)
                        {
                            blocks[j] = reader.ReadInt16();
                        }
                    }
                    int iRecord = 0; //记录
                    int iBlock  = 0; //第iBlock块
                    iRecord = recordCountReaded;
                    iBlock  = iRecord / recordsPerBlock;

                    List <DZHTick> results = new List <DZHTick>();

                    while (iBlock < 25 && blocks[iBlock] != -1)
                    {
                        int r = iRecord % recordsPerBlock;//块内记录号
                        while (iRecord < recordCount && r < recordsPerBlock)
                        {
                            results.Add(ReadARecord(dataStartOffset + blocks[iBlock] * dataBlockSize + r * dataRecordSize));
                            r       = r + 1;
                            iRecord = iRecord + 1;
                        }
                        iBlock = iBlock + 1;
                    }
                    recordCountReaded = recordCount;
                    blockNumberReaded = iBlock;
                    return(results);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(RequestTicks(symbol));
            }
        }