esper
|
Дата: 25.05.2011
Mikhail Sukhov Изначально PlazaErrors был создан с ошибкой. Если посмотреть документацию (в самом конце), то там есть некие числовые константы (некоторые равны друг другу). Так что, это вовсе не строчки. Строчки - это ошибка автора этого класса. Не совсем понял вышесказанное, в документации указано как по полученному коду ошибки можно получить символьный код ошибки, который для нас более понятен, что понимается под "строчкой"?
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 25.05.2011
esper Mikhail Sukhov Изначально PlazaErrors был создан с ошибкой. Если посмотреть документацию (в самом конце), то там есть некие числовые константы (некоторые равны друг другу). Так что, это вовсе не строчки. Строчки - это ошибка автора этого класса. Не совсем понял вышесказанное, в документации указано как по полученному коду ошибки можно получить символьный код ошибки, который для нас более понятен, что понимается под "строчкой"? Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000. В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне.
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 25.05.2011
Цитата:Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.
В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне. Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 25.05.2011
esper Цитата:Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.
В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне. Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате Никаких, наверное. Я пока для себя пытаюсь прояснить. У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально.
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 25.05.2011
Mikhail Sukhov esper Цитата:Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.
В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне. Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате Никаких, наверное. Я пока для себя пытаюсь прояснить. У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально. + кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM.
|
|
Спасибо:
|
|
|
|
|
aspirant
|
Дата: 25.05.2011
Mikhail Sukhov + кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM. Сам на это натыкался, но руки не дошли. Сейчас поискал на форуме РТС. Похоже, нужно чтобы в нитке, откуда отправляется асинхронное сообщение, должен быть бесконечный цикл с ProcessMessage. Вот здесь про это написано + это есть в плазовском примере AsyncSend. У нас ведь сейчас сообщение отправляется из GUI-thread?
|
|
Спасибо:
|
|
|
|
|
aspirant
|
Дата: 25.05.2011
А вот, кстати, почему нам самим нужно вручную "крутить" ProcessMessage.
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 26.05.2011
|
|
|
|
Mikhail Sukhov У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально. Выборочно проверял на нескольких ошибках, получаемые строки совпадали с логом. Mikhail Sukhov + кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM. Думаю, стоит обрабатывать код ошибки, который приходит в callback. В документации было указано, что если код ошибки не 0, то заявка не выставлена/исполнена и надо смотреть описание ошибки с таким кодом. Где именно возникает Invalid cast exception, а то я с таким не сталкивался? aspirantПохоже, нужно чтобы в нитке, откуда отправляется асинхронное сообщение, должен быть бесконечный цикл с ProcessMessage. Не обязательно в той же нитке где отправляется сообщение, просто где-то для соединения, через которое отправляется сообщение, должна вызываться эта функция, для обработки ответа от сервера. Это, вроде как, справедливо не только для асинхронных сообщений, но и синхронных, в прочем как и для получения любого другого сообщения от сервера. По PlazaException Mikhail SukhovЯ тоже за, если не лепить везде это исключение. Где его предлагаете применить? использовать его предлагаю там, где от плазы могут приходить COMException, чтобы можно было представить код пришедшей ошибки в более удобном виде, т.е. это в местах вызова CP2Connection.Connect, CP2Connection.Disconnect, CP2Connection.ProcessMessage, CP2DataStream.Open, CP2DataStream.Close и т.д.
|
|
Спасибо:
|
|
|
|
|
aspirant
|
Дата: 31.05.2011
esper Сейчас для подключения к роутеру используется TCP? Если подключаемся на localhost, может стоит подключаться через LRPCQ? Сделал
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 07.06.2011
aspirant esper Сейчас для подключения к роутеру используется TCP? Если подключаемся на localhost, может стоит подключаться через LRPCQ? Сделал Получил боевой логин. Если качать с нулевой ревизии как сейчас, то старт примера занимает около 10 минут. Поэтому, предлагаю сделать следующие: 1. Для этой версии все таки ввернуть поддержку базового клиента (в виде опции). Надеюсь, это не сложно. 2. Для следующей сделать собственную версию базы (чтобы хранить родные для S# торговые объекты, а не плазовские).
|
|
Спасибо:
|
|
|
|