Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Октября 12, 2024, 10:33:24 am
Начало Помощь Поиск Войти Регистрация
Новости:

Просмотр сообщений

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Сорвачев Сергей

Pages: 1 2 [3] 4
31
Вызовы callback`ов на данный момент идут из одного потока последовательно. То есть ответ - дожидается.

32
TRANSAQ Connector / Re: <bgo_buy></bgo_buy>
« on: Октября 21, 2020, 06:41:51 pm »
Пришлите пожалуйста xdf лог (необходимо установить уровень логирования loglevel=3 при вызове Initialize) на момент появления пустого bgo_buy на support@transaq.ru

33
TRANSAQ Connector / Re: <bgo_buy></bgo_buy>
« on: Октября 05, 2020, 02:03:35 pm »
Добрый день. Какую версию коннектора Вы использует?

34
TRANSAQ Connector / Re: Deadlock при вызове FreeLibrary
« on: Апреля 22, 2020, 03:16:08 pm »
В логах я проблем не увидел. Если проблема еще актуальна необходимо снять дамп процесса на момент зависания и прислать его нам. Еще было бы неплохо посмотреть Ваш код деинициализации и выгрузки библиотеки.

35
TRANSAQ Connector / Re: Deadlock при вызове FreeLibrary
« on: Апреля 13, 2020, 06:32:11 pm »
Логи на support@transaq.ru пришлите пожалуйста (dsp, xdf, ts)

36
Спасибо за ответы!
Буду разбираться дальше.
По поводу "глобальный идентификатор на каждый callback" отдельное спасибо.
Писать на C++ для меня ну вообще крайне сложно, с этим языком я пытаюсь разобраться очень давно и вообще никак не догоняю.

Можно, например, Python адаптировать под работу с txmlconnector`ом. Но в данном случае также придется мэтчить сишные типы с питоновскими.

37
У меня сложности в понимании коннектора возникли по сути не по самому коннектору, а его реализации на C#.
Эти сложности связаны с тем что библиотека txmlconnector написана на C++, у нее плюсовый интерфейсы и типы, которые при использовании в C# необходимо мэтчить ("маршаллить") с шарповыми.

[DllImport("txmlconnector.dll", CallingConvention = CallingConvention.StdCall)]
private static extern bool SetCallback(CallBackDelegate pCallback);
Это всего лишь декларация (описание) функции в языке C#, которая экспортируется из библиотеки txmlconnector. Вам ее особо понимать не надо, надо использовать саму функцию с указанным набором аргументов.

// тут понятно, делегируем функцию Колбек из библиотеки в свою функцию
Callback-функция - как можно догадаться, есть функция обратного вызова. То есть мы указываем библиотеке txmlconnector (см функцию SetCallback) что хотим получать данные от нее в нашу функцию, которую пишем в своем приложении. Данные, приходящие в колбек - это результаты выполнения запросов, которые пораждаются функцией SendCommand. Как callback-функция будет вызываться и откуда в ней берутся данные вас волновать не должно. Будем считать библиотеку черным ящиком, который что-то генерирует и оповещает нас об этом. Главное что нужно знать и это указано в документации - callback функцию нельзя блокировать на длительное время и делать в ней сложную обработку данных. То есть ее назначение принять данные и положить, например, в очередь для дальнейшей обработки.
Из документации:
"В callback функции не должны выполняться операции, которые могут заблокировать поток на длительное время. Также из callback функции не следует вызывать управляющие функции библиотеки: Initialize, UnInitialize, SetCallback, SetCallbackEx, SendCommand, так как это может привести к взаимной блокировке потоков библиотеки."

// тут не понятно что же такое IntPtr, поискал почитал понятнее не стало использую как есть без понимания
Это шарповый тип, который представляет из себя указатель. Так как в C# нет указателей, как в C++, их надо мэппить на шарповые типы.
Их MSDN: "Тип IntPtr может использоваться языками, поддерживающими указатели, и как распространенный способ обращения к данным между языками, которые не поддерживают указатели."
Пример маршаллинга класса: https://www.codeproject.com/Articles/18032/How-to-Marshal-a-C-Class

Возможно есть какой-то другой более простой способ
Пишите на C++. Как минимум потребность в маршаллинге исчезнет.

Вопрос к разработчикам.
Такой возможности нет. Есть возможность (см. функцию SetCallback) задать глобальный идентификатор на каждый callback (это сделано для проектов, в которых несколько библиотек пишут в одну callback-функцию).

38
Добрый день.
узнать, закончилось ли поступление начальных данных после соединения с сервером?
Об окончании стартапа можно судить по появлению элемента <server_status connected=true>.

Еще вопрос по начальным данным - что это за элементы: Sec_info_upd и pits?
pit - Параметры инструмента в режиме торгов
sec_info_upd - Обновление информации по инструменту

или каждый раз все элементы xml будут располагаться в новом порядке?
Порядок появления элементов не регламентирован. Более того, некоторые из них вообще могут отсутствовать.

Более подробную информацию по вышеперечисленным структурам Вы можете найти в документации.

39
Ваш вопрос не очень понятен. Вы хотите услышать что при общей небезопасности коннектора относительно многопоточности функция FreeMemory потокобезопасна?  На данный момент да, как будет дальше - гарантий нет. Данную функцию зовет пользователь, при условии что он знает об ограничениях библиотеки, ничего не мешает ему синхронизировать вызовы функций и не звать их из нескольких потоков. Библиотека же не заставляет вас вызывать FreeMemory в колбэк-функции.

40
Библиотека TXmlConnector не рассчитана на работу в многопоточном режиме. Каждый вызов любой функции должен быть синхронизирован.

41
TRANSAQ Connector / Re: Error reading end tag.
« on: Мая 16, 2017, 10:58:41 am »
при частом polling-e командой "get_portfolio"
Команда вызывается из нескольких потоков?

рассчитан ли Transaq connector на многопоточное использование? 
Не расчитан. Возможно, отсюда (если вы используете библиотеку в многопоточном режиме) и ошибка Error reading end tag



42
TRANSAQ Connector / Re: Добрый день
« on: Февраля 22, 2017, 10:11:10 am »
Добрый день! А зачем вы генерируете lib-файл? Загрузите библиотеку динамически с помощью функций LoadLibrary и GetProcAddress.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685090(v=vs.85).aspx

Для случая со статической библиотекой:
В вашем коде не видно header-файла с объявлением функций коннектора.
Функция SendCommand объявлена так:
BYTE*  __stdcall  SendCommand(BYTE* pData);

44
TRANSAQ Connector / Re: Корректное завершение работы
« on: Марта 24, 2014, 04:59:12 pm »
Скачать версию 2.7 можно здесь:
http://www.transaq.ru/cl_files/v508/508TXmlConnector_b2.7.zip

45
TRANSAQ Connector / Re: Ошибка "data flow logger"
« on: Марта 17, 2014, 09:50:37 am »
А как указывается путь к папке с логам, что указывается при вызове Initizlize()? Есть ли права на запись и создание директорий в указанной папке?

Pages: 1 2 [3] 4


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!