Alexander 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
			
					 
					 
					
	
			Вступлю, пожалуй, в разговор.
  Можно конкретики больше - где кто-то был выставлен глупым и недалёким, где пренебрежительное отношение было продемонстрировано? И где не были даны ответы на заданные вопросы?
  Даже запрошенные исходники отправил я в личку.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					FiNick 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Написал вот так: Код
private void ProcessPlazaStream(PlazaRecord record, PlazaColumn isinIdColumn, bool ignoreIfNotExist, Action<Security> action)
{
        var isinId = record.Get<int>(isinIdColumn);
	ProcessEvents(() => ProcessSecurityAction(isinId, action, ignoreIfNotExist));
}
private void ProcessSecurityAction(int isinId, Action<Security> action, bool ignoreIfNotExist)
{
        if (isinId==0)
            throw new ArgumentNullException("isinId");
        if (action == null)
            throw new ArgumentNullException("action");
        Security security = _isinIdSecurities.TryGetValue<int, Security>(isinId);
        if (security == null)
        {
            if (!ignoreIfNotExist)
            {
                //_suspendedSecurityEvents.Add(isinId, action); что это?
            }
        }
        else
            action(security);
}
private void OnSessionContentsDerivativeStreamInserted(PlazaRecord record, PlazaSessionContentsDerivativeColumns metadata, Action<Security> initHandler, Action<Security> updateHandler)
{
	ProcessEvents(() =>
	{
		var isinId = record.Get<int>(metadata.IsinId);
		var secCode = record.Get<string>(metadata.ShortIsin);
                var sec = GetSecurity(CreateSecurityId(secCode, "RTS"), security =>
                {
                    _isinIdSecurities.TryAdd(isinId, security);
                    InitSecurityInfo(security, record, metadata);
                    security.Code = secCode;
                    initHandler(security);
                    
                    UpdateSecurityInfo(security, record, metadata);
                    updateHandler(security);
                });
        });
}
 До клиринга все вроде норм работало, на клиринге стали вылетать ошибки из PlazaDepthBuilder.FlushChanges, строка: Код
var newDepth = dict[oldDepth.Security].PendingDepth; 
 Говорит что в dict нет таких-то ключей, ключем тут является security. Есть идеи?)
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					frontman 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
			
					 
					 
					
	
			Погодите... а вы что именно исправляли? Потому что если просто создать в PlazaTrader словарь с _isinIdSecurities это не поможет. Проблема в том что в вечернюю сессию у всех инструментов существует по 2 issin_id(Дневной и вечерний) Я создавал несколько словарей для замены...  У вас в _isinIdSecurities хранятся пары где  issin_id - различный , а Security один и тот же? Или как?
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					frontman 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
			
					 
					 
					
	
			Alexander Mukhanchikov Вступлю, пожалуй, в разговор.
  Можно конкретики больше - где кто-то был выставлен глупым и недалёким, где пренебрежительное отношение было продемонстрировано? И где не были даны ответы на заданные вопросы?
  Даже запрошенные исходники отправил я в личку.  Ну если вы перечитаете переписку то все поймете думаю... Я бы не хотел на этом акцентировать внимание...
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					FiNick 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
			
					 
					 
					
	
			frontman У вас в _isinIdSecurities хранятся пары где  issin_id - различный , а Security один и тот же? Или как?  Да, именно так, после клиринга у нас будут записи с разными isin_id и одинаковыми Security, в этом ничего плохого нет. А возможна ли ситуация, когда после клиринга приходит некоторая security2 у которой точно такой isin_id как и у некоторой security1 которая еще до клиринга была? врядли... но если так надо будет к ключу добавить еще какой-нибудь session_id. Ну и вообще, логика вроде верная: приходит новый инструмент, GetSecurity находит или создает соответствующий экземпляр Security, а я с этим экземпляром ассоциирую isin_id, если таких isin_id несколько это не страшно. если понадобится различать какой из них старый, какой новый, то добавим session_id
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					frontman 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 28.12.2011
					
					
			
					 
					 
					
	
			Ну да. Все норм.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					FiNick 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 29.12.2011
					
					
			
					 
					 
					
	
			Поставил заглушку в PlazaDepthBuilder.FlushChanges: Код
if (!dict.ContainsKey(oldDepth.Security)) //Заглушка, удалить
    continue;
var newDepth = dict[oldDepth.Security].PendingDepth;
 Вроде через клиринг нормально перешел, только повылетали "P2ERR_SERV_NO_SERVICE". После клиринга заявки ставятся, торговля идет, стакан работает. Изменения в шелве, ник FiNick_cp, буду еще тестить как работает
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |