ПоискПоиск  ПравилаПравила  ПользователиПользователи  ПрофильПрофиль  РегистрацияРегистрация  ВходВход
Форум «Техническая поддержка»
Форум для разработчиков и пользователей программного обеспечения, использующегося на бирже.

Раздел тех.поддержки | Форма обратной связи Тех.поддержка ОАО Московская Биржа: +7 (495) 733-9507, 287-7691
любые вопросы по TWIME
Новая тема   Ответить на тему
На страницу Пред.  1, 2, 3 ... 38, 39, 40, 41  След.
 Предыдущая тема :: Следующая тема 
 Автор  Сообщение 
vasko
Стаж: 9 лет
Сообщений: 1275
Пн Дек 12, 2016 12:02 (спустя 1 год 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
karat писал(а):
вдруг там теряете что то 

вы зря сомневаетесь в моих способностях читать из сокета, очевидно я был уверен, что не получаю ответ от биржи, вероятность неответа была на вскидку процентов 30, сегодня я запустил тот же самый тест, без каких либо изменений в коде 25 раз, и все разы прошли ожидаемо- т.е ответ получен.
так что проблему можно считать закрытой, правда каким образом она решилась остаётся загадкой. 
 
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Пн Дек 12, 2016 12:29 (спустя 1 год 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
vasko писал(а):
karat писал(а):
вдруг там теряете что то 

правда каким образом она решилась остаётся загадкой. 

я бы все таки у биржи проконсультировался по почте. Они подымут свои логи и сами посмотрят, приходило что или нет.

В способностях чтения сокета не сомневаюсь. Но ситуация, что не пришло ответа и при этом seq_num не поменялся наводит на мысль, что биржа просто ничего не получила, о чем я и попытался сказать. То есть вы думаете, что ваш код послал сообщение, а на деле может и не так. 
 
vasko
Стаж: 9 лет
Сообщений: 1275
Пн Дек 12, 2016 13:12 (спустя 1 год 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
karat писал(а):
То есть вы думаете, что ваш код послал сообщение, а на деле может и не так. 

такого быть не может, там у меня сначала вызывается запись в сокет(нагл разумеется отключён), потом логирование, что я туда записал, т.е из приведённых мной логов вот эта строка
tid: 2 2016-12-08 22:12:40.914458: twime_send: 32 00 74 17 45 4D 01 00 50 1A 1F EB 87 67 8E 14 00 00 00 00 00 00 00 00 00 59 XX XX XX XX XX XX XX 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

говорит, что в сокет я писал OrderMassCancelRequest, если всё ещё сомневаетесь в моём коде, вот запись в сокет

                            socket_send_async(socket, &buf_t[0], buf_t.size());
                            mlog() << "twime_send: " << print_binary(str_holder(&buf_t[0], buf_t.size()));

где socket_send_async
static void socket_send_async(int socket, const char* ptr, uint32_t sz){
    while(sz){
        int ret = ::send(socket, ptr, sz, 0);
        if(ret == -1){
            MPROFILE("send_EAGAIN")
            pollfd pfd = pollfd();
            pfd.events = POLLOUT;
            pfd.fd = socket;
            if(errno == EAGAIN || errno == EWOULDBLOCK){
                ret = poll(&pfd, 1, 100);
                if(ret < 0)
                    throw_system_failure("poll() error");
                //timeout or can send
                continue;
            }
            else
                throw_system_failure("send() error");
        }
        else if(ret == 0)
            throw_system_failure("socket closed");
        else if(ret < 0)
            throw_system_failure("socket error");
        ptr += ret;
        sz -= ret;
    }
}

в саппорт конечно написать можно, но сейчас то проблема самоустранилась и вроде как пока не актуальна, тем более я предполагаю, что разработчики twime сами иногда смотрят в эту ветку и смогут высказать своё мнение. 
 
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Пн Дек 12, 2016 16:25 (спустя 1 год 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
Вообщем как только повторится, пишите, я поделюсь мнением, где проблема зарыта =) 
 
vasko
Стаж: 9 лет
Сообщений: 1275
Пн Дек 12, 2016 16:49 (спустя 1 год 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
karat писал(а):
Вообщем как только повторится, пишите, я поделюсь мнением, где проблема зарыта =) 


я подозреваю, что где-то в моём днк, но был бы признателен услышать ваше мнение сейчас Laughing  
 
vasko
Стаж: 9 лет
Сообщений: 1275
Вт Дек 27, 2016 14:16 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
что делать, когда в EstablishmentAck после разрыва приходит sequence меньший, чем был в сообщении Sequence за миг до этого?
tid: 12 2016-12-27 13:50:11.916434: <|Sequence|5933|
tid: 12 2016-12-27 13:50:13.416356: <header: 8 5006 19781 1
tid: 12 2016-12-27 13:50:13.416371: twime_recv: 2D 17 00 00 00 00 00 00
tid: 12 2016-12-27 13:50:13.416377: <|Sequence|5933|
tid: 11 2016-12-27 13:50:14.220592: >|Sequence|18446744073709551615|
tid: 11 2016-12-27 13:50:14.220630: twime_send: 08 00 8E 13 45 4D 01 00 FF FF FF FF FF FF FF FF
tid: 12 2016-12-27 13:50:14.916452: twime::connection::recv_thread exception: twime_recv_test_error
tid: 12 2016-12-27 13:50:14.916464: twime::recv_thread ended
tid: 11 2016-12-27 13:50:15.531726: twime::send_thread ended
tid: 4 2016-12-27 13:50:15.536339: >|Establish|1482846615536326519|3000|XXXXXXXXXXXXXX|
tid: 13 2016-12-27 13:50:15.536380: twime_send: 20 00 88 13 45 4D 01 00 77 D7 6E EF 23 21 94 14 B8 0B 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
tid: 14 2016-12-27 13:50:15.570154: twime::connection::recv_thread exception: twime_recv_test_error
tid: 14 2016-12-27 13:50:15.570161: twime::recv_thread ended
tid: 13 2016-12-27 13:50:15.570338: twime::send_thread ended
tid: 4 2016-12-27 13:50:15.570404: connection_holder::check_connection() exception: connection error
tid: 15 2016-12-27 13:50:18.645087: twime_send: 20 00 88 13 45 4D 01 00 47 12 BA A8 24 21 94 14 B8 0B 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
tid: 4 2016-12-27 13:50:18.645114: >|Establish|1482846618645041735|3000|XXXXXXXXXXXXXX|
tid: 16 2016-12-27 13:50:18.679180: <header: 20 5001 19781 1
tid: 16 2016-12-27 13:50:18.679194: twime_recv: 47 12 BA A8 24 21 94 14 B8 0B 00 00 2B 17 00 00 00 00 00 00
tid: 16 2016-12-27 13:50:18.679202: <|EstablishmentAck|1482846618645041735|3000|5931|
tid: 16 2016-12-27 13:50:18.679207: set_next_seq, next_seq: 5933, max_seq: 5931

как видно был 5933 стал 5931, а ретрансмит не работает для отрицательного количества сообщений. 
 
Последний раз редактировалось автором 27.12.2016 14:17, всего редактировалось 1 раз
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Вт Дек 27, 2016 14:59 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
А в чем может быть проблема? Вроде логично уменьшить свой счетчик до значения сервера. 
 
vasko
Стаж: 9 лет
Сообщений: 1275
Вт Дек 27, 2016 15:06 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
не логично, 2 потерянных сообщения уже у меня наложились, я не могу их отменить, если сервер считает что их не было, то консистенция нарушена, если сервер их так же наложил, то возможно помимо этих 2х сообщений было ещё 10, которые я пропустил и опять состояние сервера и моё не совпадает. 
 
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Вт Дек 27, 2016 15:21 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
vasko писал(а):
не логично, 2 потерянных сообщения уже у меня наложились, я не могу их отменить, если сервер считает что их не было, то консистенция нарушена, если сервер их так же наложил, то возможно помимо этих 2х сообщений было ещё 10, которые я пропустил и опять состояние сервера и моё не совпадает. 

ситуация на мой взгляд редкая, что сервер не обработал сообщения при условии, если они правильно сформированы. нужно разбираться, как произошла такая ситуация. 
 
vasko
Стаж: 9 лет
Сообщений: 1275
Вт Дек 27, 2016 15:35 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
есть спека, есть несоответствие ей, очевидно тут проблема сервера и решить её могут только разработчики twime'а. 
 
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Вт Дек 27, 2016 17:02 (спустя 1 год 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
vasko писал(а):
есть спека, есть несоответствие ей 

что такое спека? 
 
ALEXEYKARPOV
Стаж: 5 лет 3 месяца
Сообщений: 273
Ср Дек 28, 2016 11:22 (спустя 1 год 18 дней) Ответить с цитатой Получить постоянный адрес сообщения
Цитата:
что такое спека?  

А вы случайно не с майл.ру?
https://otvet.mail.ru/question/48000216 Very Happy  
 
karat
Стаж: 1 год 9 месяцев
Сообщений: 137
Ср Дек 28, 2016 11:31 (спустя 1 год 18 дней) Ответить с цитатой Получить постоянный адрес сообщения
ALEXEYKARPOV писал(а):
Цитата:
что такое спека?  

А вы случайно не с майл.ру?
https://otvet.mail.ru/question/48000216 Very Happy  

нет, у меня времени хватает только тут посматривать/отвечать

спека - это быть может спекуляция? я как то не силен в современном жаргоне

upd. ааа. елки. это спецификация Smile спасибо за ссылку 
 
Последний раз редактировалось автором 28.12.2016 11:34, всего редактировалось 3 раза
Physic
Стаж: 1 год 9 месяцев
Сообщений: 41
Вс Янв 22, 2017 16:26 (спустя 1 год 1 месяц 13 дней) Ответить с цитатой Получить постоянный адрес сообщения
Прочитал я несколько вводных статей о языке Python. Многие его расхваливают, пока не понятно, правда, за что именно? Но вот что конкретно НЕ понятно с применением языка Python для протокола TWIME:

Почему-то вот такой код из стандартного примера (файл "schema.py"), распространяемого Мос. Биржей, на Python оказывается валидным (правильным):
#    <message name="NewOrderSingle" id="6000" >
#        <field name="ClOrdID"             id="11"    type="UInt64"           />
#        <field name="ExpireDate"          id="432"   type="TimeStamp"        />
#        <field name="Price"               id="44"    type="Decimal5"         />
#        <field name="SecurityID"          id="48"    type="Int32"            />
#        <field name="ClOrdLinkID"         id="583"   type="Int32"            />
#        <field name="OrderQty"            id="38"    type="UInt32"           />
#        <field name="TimeInForce"         id="59"    type="TimeInForceEnum"  />
#        <field name="Side"                id="54"    type="SideEnum"         />
#        <field name="CheckLimit"          id="20217" type="CheckLimitEnum"   />
#        <field name="Account"             id="1"     type="String7"          />
#    </message>

class NewOrderSingle(Serializer):

    def __init__(self):
        tag = 6000

        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},

            {'name':'ClOrdID',              'fmt':'Q'},
            {'name':'ExpireDate',           'fmt':'Q'},
            {'name':'Price',                'fmt':'q'},
            {'name':'SecurityID',           'fmt':'i'},
            {'name':'ClOrdLinkID',          'fmt':'i'},
            {'name':'OrderQty',             'fmt':'I'},
            {'name':'TimeInForce',          'fmt':'B'},
            {'name':'Side',                 'fmt':'B'},
            {'name':'CheckLimit',           'fmt':'B'},
            {'name':'Account',              'fmt':'7s'}
        ]

        Serializer.__init__(self, tag, fields)


А мой код, добавляющий возможность снимать заявки оказывается не валидным:
#    <message name="OrderCancelRequest" id="6002" >
#        <field name="ClOrdID"             id="11"    type="UInt64"           />
#        <field name="OrderID"             id="37"    type="Int64"            />
#        <field name="Account"             id="1"     type="String7"          />
#    </message>

class OrderCancelRequest(Serializer):

    def __init__(self):
        tag = 6002

        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},

            {'name':'ClOrdID',              'fmt':'Q'},
            {'name':'OrderID',              'fmt':'q'},
            {'name':'Account',              'fmt':'7s'}
        ]

        Serializer.__init__(self, tag, fields)

Комментарии на Питоне, начинающиеся с символа '#' оставил намерено для ясности. Вообще не ясно, чем принципиально отличаются эти 2 фрагмента, но первый фрагмент при запуске не приводит к возникновению исключения, а второй почему то приводит. Не понятно почему? 
 
Последний раз редактировалось автором 23.01.2017 13:37, всего редактировалось 2 раза
ALEXEYKARPOV
Стаж: 5 лет 3 месяца
Сообщений: 273
Вт Янв 24, 2017 09:52 (спустя 1 год 1 месяц 15 дней) Ответить с цитатой Получить постоянный адрес сообщения
Цитата:
первый фрагмент при запуске не приводит к возникновению исключения, а второй почему то приводит. Не понятно почему?  

по причине написанной в исключении 
 
Показать сообщения:   
Новая тема   Ответить на тему
Список разделов форума -> Техническая поддержкаНа страницу Пред.  1, 2, 3 ... 38, 39, 40, 41  След.
Страница 39 из 41

Rambler's Top100 Rambler's Top100
Рейтинг@Mail.ru
Copyright © Московская биржа, 2006-2017.
Ваши предложения, замечания и вопросы
по работе форума направляйте на email: