public void DoneRecordUpdate(Meta.Message source, string filter)
        {
            // Закончили обрабатывать запись.
            // Хорошее место для сохранения накопленных данных куда-то.
            // В демо-примере - просто печать в консоль.

            ProcessRecord();
            // Здесь также следует сбросить собранные значения первичных ключей,
            // чтобы подготовиться к получению значений для следующей записи.
            _keys.Clear();
            _currentRecord = null;
        }
        public virtual bool InitRecordUpdate(Meta.Message source, string filter)
        {
            //Log("InitRecordUpdate Name=" + source.Name);

            // Начало обработки записи.
            // Здесь нужно произвести поиск по ключам
            // и вернуть true, если запись не найдена (т.е. новая)



            if (_keys.Count == 0)
            {
                // SetKeyValue() ни разу не был вызван -
                // данная таблица не имеет первичных ключей.
                // Все записи будут считаться новыми, хранить
                // их будем по порядковому номеру.
                _currentRecord = new CTableRecrd();
                _records.Add(_records.Count.ToString(), _currentRecord);
                return(true);
            }
            else
            {
                // У таблицы есть первичные ключи -
                // ищем и храним записи по их значению.
                var b = new StringBuilder();
                foreach (DictionaryEntry e in _keys)
                {
                    b.Append(e.Key.ToString())
                    .Append('=');

                    if (e.Value != null)
                    {
                        b.Append(e.Value.ToString());
                    }
                    // else
                    b.Append(';');
                }
                var s = b.ToString();
                if (_records.TryGetValue(s, out _currentRecord))
                {
                    // Запись найдена
                    return(false);
                }
                // Запись по ключу не найдена - создадим новую
                _currentRecord = new CTableRecrd();
                _records.Add(s, _currentRecord);
                return(true);
            }
        }
Beispiel #3
0
 public override bool InitRecordUpdate(Meta.Message source, string filter)
 {
     if (source.IsOrderbook)
     {
         // Для таблиц типа "orderbook" - специальная обработка.
         // Запись всегда будет новой, добавим ее в "стакан"
         if (_orderbook != null)
         {
             _currentRecord = new CTableRecrd();
             _orderbook.Add(_currentRecord);
         }
         return(true);
     }
     return(false);
 }