aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 11.03.2011
					
					
			
					 
					 
					
	
			skuvv Почему рекваест тайп фиксированный?  Посмотрю в документации, спасибо за то, что обратил внимание. skuvv  2)  в PlazaStreamManager void Run() Не обрабатывает состояния типа DS_STATE_ERROR или DS_STATE_CLOSE, те в случае чего будет затык и поток будет висеть закрытым или с ошибкой. Я для себя брал реализацию с примера(могу выложить если что)
  Эти состояния обрабатываются методом PlazaStream.Poll(CP2ConnectionClass connection). См. строчку 174 Кодitem.Stream.Poll(item.Connection);  Я тоже брал реализацию с примера[smile].  При тесте некоторые потоки открывались не с первого раза: затыков не было.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 11.03.2011
					
					
			
					 
					 
					
	
			aspirant Я тоже брал реализацию с примера[smile].  При тесте некоторые потоки открывались не с первого раза: затыков не было.
 
  Тогда все ок [smile] 
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 17.03.2011
					
					
			
					 
					 
					
	
			Вопрос по _PlazaTrader.StartListeners() Каким образом планируется добавлять потоки? Сейчас по общему типу PlazaMarketData. Не лучше ли явно задавать (StreamName,TableName,TRequestType) ? допустим все StreamName в списке - просто выбираем из enum списке, потом на основе выбронного StreamName, выбираем из Dictionary<enum StreamName,enum TableName> выбираем TableName подготавлием метаданные(default загатовку для соответсвующей TableName) и подписываем поток. StreamName и TableName подготовить не проблема и народу понятно по документации будет, что где. PS Средней руки юзер типа меня не осилит процесс подписки(то что идет внутри StartListeners()), слишком замудренно [biggrin] 
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 17.03.2011
					
					
			
					 
					 
					
	
			С выбором Dictionary я ошибся... Тогда как вариант - единый enum список с названиями типа StreamName_TableName. Чтото Например FORTS_FUTTRADE_REPL_orders_log А уже на приеме парсить сроку, все стримы оканчиваются на REPL.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 17.03.2011
					
					
			
					 
					 
					
	
			skuvv Вопрос по _PlazaTrader.StartListeners()  Это был пока черновой вариант.  Сегодня появились мысли, как все это сделать попроще.  Надеюсь выложить новую версию с комментариями в ближайшие дни.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 18.03.2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			aspirant Сегодня появились мысли, как все это сделать попроще.  Только что залил коммит: - Удалил всякий мусор (PlazaDataBuffer, PlazaColumnSet)
  - Переименовал PlazaTable в PlazaSystemTable.
  - Добавил класс PlazaTable для клиентской подписки к потокам. Внутри него есть массив PlazaRecord[], в который попадают данные из потоков.  
  - Добавил в PlazaTrader метод public void StartListeners(params PlazaTable[] tables) для подписки на любые таблицы.  Вот код клиентской подписки к двум потокам:
 Кодvar optSessionTable = new PlazaTable(PlazaColumns.OptionSessionContents); var rtsIndexTable = new PlazaTable(PlazaColumns.RtsIndex); _plazaTrader.StartListeners(rtsIndexTable, optSessionTable);
    В обоих случаях запрашиваются все колонки (поля) таблиц потоков Плазы.  Если нужны не все колонки, можно использовать другой конструктор PlazaTable, в котором есть параметр IEnumerable<PlazaColumn> columns.  Данные отлавливаются в событии public event Action<PlazaRecord[]> DataReceived; класса PlazaTable 
 Теперь насчет метода  public void StartListeners(PlazaMarketData marketData).  Он нужен для перегонки данных потоков в стандартные объекты, например создания коллекций инструментов и т.д., и поэтому нам необходимо контроллировать, какие подписки создаются и с каким набором колонок (полей).  Любые другие предложения приветствуются.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 18.03.2011
					
					
			
					 
					 
					
	
			Я это и имел ввиду[thumbup]  в блоке  Код             foreach (var fieldInfo in this.GetType().GetFields().Where(x => x.FieldType == typeof(PlazaColumn)))             {                 if (!(fieldInfo.Name == "ReplId" || fieldInfo.Name == "ReplRev" || fieldInfo.Name == "ReplAct"))                     result.Add((PlazaColumn)fieldInfo.GetValue(this));             }
 
  В некоторых таблицах добавляются одинаковые поля, например таблица FuturesSessionContents, поле MinStep
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					aspirant 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 18.03.2011
					
					
			
					 
					 
					
	
			skuvv В некоторых таблицах добавляются одинаковые поля, например таблица FuturesSessionContents, поле MinStep  Потому что тот (не я [biggrin]), кто расписывал класс  PlazaFuturesSessionContentsColumns, забыл исправить название поля Плазы, когда копировал переменные: Кодthis.StepPrice = new PlazaColumn(PlazaTableRegistry.FutSessionContents, "min_step", typeof(decimal), "d16.5", true);  Я только что залил исправление. При тестировании нужно будет проверить каждый класс в папке Metadata (создать из них таблицы Плазы).  Я, когда тестировал алгоритм подключения к потокам, тоже натыкался на пару схожих ошибок.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 18.03.2011
					
					
			
					 
					 
					
	
			aspirant skuvv В некоторых таблицах добавляются одинаковые поля, например таблица FuturesSessionContents, поле MinStep  Потому что тот (не я [biggrin]), кто расписывал класс  PlazaFuturesSessionContentsColumns, забыл исправить название поля Плазы, когда копировал переменные: Кодthis.StepPrice = new PlazaColumn(PlazaTableRegistry.FutSessionContents, "min_step", typeof(decimal), "d16.5", true);  Я только что залил исправление.  Не заметил ночью [biggrin]  Цитата: При тестировании нужно будет проверить каждый класс в папке Metadata (создать из них таблицы Плазы).  Я, когда тестировал алгоритм подключения к потокам, тоже натыкался на пару схожих ошибок.
 
  Займусь этим
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					skuvv 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Дата: 18.03.2011
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			потоки FuturesAggregation не работают(не получают данные после выхода в онлайн режим), в логах клиента error: есть подозрение на  lifenumber метатаблицы Цитата: 2011-03-18 15:28:05.305;p2mq-cli;;MQ library started. 2011-03-18 15:28:05.309;p2repl-cli;;Client replication library started 2011-03-18 15:28:05.321;p2mq-cli;;Socket connected;conn 0x911DC14;host 'localhost';port 4001 2011-03-18 15:28:05.323;p2mq-cli;;Connection 0x911DB30 connected; connID 1 2011-03-18 15:28:07.085;p2mq-cli;;Socket connected;conn 0x9139B64;host '127.0.0.1';port 4001 2011-03-18 15:28:07.087;p2mq-cli;;Connection 0x9139A80 connected; connID 2 2011-03-18 15:28:07.096;p2repl-cli;;Stream created;stream 0xA442FA8 2011-03-18 15:28:07.096;P2ReplStorage;;Revs were inited; stream 0x0; cnt 1 2011-03-18 15:28:07.096;P2ReplStorage;;	tbl_idx 0; cur_rev 1 2011-03-18 15:28:07.097;P2ReplStorage;;Basic policy created;stream 0x0,policy 0xA440EB8 2011-03-18 15:28:07.116;p2repl-cli;;Stream opening started;stream 0xA442FA8,type 2,name 'FORTS_FUTAGGR5_REPL',server_addr 'FINTER_FORTS3.inter_futaggr5' 2011-03-18 15:28:07.135;p2repl-cli;;Stream opened;stream 0xA442FA8;channel 0x4CF4F0D1358 2011-03-18 15:28:07.135;P2ReplStorage;;Revs were cleared after lifenum change; stream 0xA442FA8; cnt 1 2011-03-18 15:28:07.135;P2ReplStorage;;	tbl_idx 0; cur_rev 0 2011-03-18 15:28:07.140;p2repl-cli;;CLOSE message posted;stream 0xA442FA8 2011-03-18 15:28:07.142;p2repl-cli;error;p2err 40962=0xA002 - 'REPL:OBJECT_CHANGED__';Stream state was changed;stream 0xA442FA8 2011-03-18 15:28:07.142;p2repl-cli;error;p2err 40962=0xA002 - 'REPL:OBJECT_CHANGED__';Couldn't start scheme setting (auto);stream 0xA442FA8 2011-03-18 15:28:07.143;P2ReplStorage;;Basic policy deleted;stream 0xA442FA8,policy 0xA440EB8 2011-03-18 15:28:07.148;P2ReplStorage;;Revs were inited; stream 0x0; cnt 1 2011-03-18 15:28:07.148;P2ReplStorage;;	tbl_idx 0; cur_rev 2 2011-03-18 15:28:07.148;P2ReplStorage;;Basic policy created;stream 0x0,policy 0xA448968 2011-03-18 15:28:07.169;p2repl-cli;;Stream opening started;stream 0xA442FA8,type 2,name 'FORTS_FUTAGGR5_REPL',server_addr 'FINTER_FORTS3.inter_futaggr5' 2011-03-18 15:28:07.189;p2repl-cli;;Stream opened;stream 0xA442FA8;channel 0x4D04F0D1358 2011-03-18 15:28:07.190;p2repl-cli;;Scheme setting started;stream 0xA442FA8 2011-03-18 15:28:07.209;p2repl-cli;;Scheme is set;stream 0xA442FA8;channel 0x4D04F0D1358 2011-03-18 15:28:07.209;p2repl-cli;;Statistics module for table 'orders_aggr' was successfully registered 2011-03-18 15:28:07.210;p2repl-cli;;Statistics was registered;stream name FORTS_FUTAGGR5_REPL 2011-03-18 15:28:07.213;p2repl-cli;;Data requested;stream 0xA442FA8;channel 0x4D04F0D1358;session 0 2011-03-18 15:28:07.232;p2repl-cli;;DATA message received;stream 0xA442FA8 2011-03-18 15:28:07.232;p2repl-cli;;Stream is on-line;stream 0xA442FA8
 
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Спасибо:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |