aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 4/22/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov В client_rounter.ini что написано? Какой порт?  Code; TCP-порт, на котором слушает роутер ;port=4001 port=3001  Правил сам
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 4/22/2011
					
					
			
					 
					 
					
	
			aspirant Mikhail Sukhov В client_rounter.ini что написано? Какой порт?  Code; TCP-порт, на котором слушает роутер ;port=4001 port=3001  Правил сам  Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 4/22/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?  Чтобы работало[smile].  У тебя там дальше вот так? Code[ROUTEINFO] ; настройка соединений роутера с вышестоящими серверами. ; формат строки: {default|direct} = {ip-адрес | имя FQDN}:{номер порта} ; Должно быть одно дефолтное соединение и может быть от нуля до нескольких директных. ; Об адресах, на котрорые можно и нужно устанавливать дефолтные и директные соединения, проконсультируйтесь ; со службой тех. поддержки!!! В дистрибутиве указана рекомендуемая настройка для соединения с пулом серверов РТС. ;default=p2forts.rts.ru:4001 default=beta-forts.rts.ru:3001  Тоже правил сам.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 4/22/2011
					
					
			
					 
					 
					
	
			aspirant Mikhail Sukhov Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?  Чтобы работало[smile].  У тебя там дальше вот так?  У меня работает и с 4001 и с 3001. Может оставим тот, который по умолчанию после установки идет?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/1/2011
					
					
			
					 
					 
					
	
			aspirant Mikhail Sukhov Зачем нужна такая конструкция? CodeThreadPool.QueueUserWorkItem(s => {     //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline });     WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });   Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?  Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/6/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov aspirant Mikhail Sukhov Зачем нужна такая конструкция? CodeThreadPool.QueueUserWorkItem(s => {     //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline });     WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });   Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?  Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?  Ок, раз никто не знает, можно удалять?[laugh] 
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/6/2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Mikhail Sukhov Mikhail Sukhov aspirant Mikhail Sukhov Зачем нужна такая конструкция? CodeThreadPool.QueueUserWorkItem(s => {     //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline });     WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });   Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?  Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?  Ок, раз никто не знает, можно удалять?[laugh]   Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение.  Вот  здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки.  Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/7/2011
					
					
			
					 
					 
					
	
			aspirant Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение.  Вот  здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки.  Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.  Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод  BaseTrader.ProcessSecurityAction.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/7/2011
					
					
			
					 
					 
					
	
			Mikhail Sukhov aspirant Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение.  Вот  здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки.  Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.  Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод  BaseTrader.ProcessSecurityAction.  За одно вынес все потоки в класс PlazaListenerRegistry. Во время переноса увидел, что потоки в классе PlazaTrader дублируют те, что есть в PlazaListenerRegistry. Первые убрал в пользу вторых. Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 5/7/2011
					
					
			
					 
					 
					
	
			OK, понятно. Mikhail Sukhov Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.  Я думал о таком объединении потоков.  Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий.  А в нашем случае речь идет о миллисекундах.  Или я усложняю?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |