Changes between Initial Version and Version 1 of Ticket #482, comment 44


Ignore:
Timestamp:
Oct 26, 2016, 4:01:54 PM (8 years ago)
Author:
dimag

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #482, comment 44

    initial v1  
    2323>
    2424> }}}
    25    Для команды 1, данное значение в пункте 3 будет возвращено в поле handle->last_sr_reply, после успешной доставке сообщения, что будет означать что команда принята к обработке на сервере. Команда 2 не начнётся пока сервером не будет обработана команда 1 и возвращено сообщение 3, что команда не запустилась из другого потока, вызов команда 1 будет в мутексе.
     25   Для команды 1, данное значение в пункте 3 будет возвращено в поле handle->last_sr_reply, после успешной доставке сообщения, что будет означать что команда принята к обработке на сервере. Команда 2 не начнёт выполняться пока сервером не будет обработана команда 1 и возвращено сообщение 3, что команда не запустилась из другого потока, вызов команда 1 будет в мутексе.
    2626
    2727   То есть функция esl_send_recv посылает сообщения, если дошло, ждёт ответа от сервера об результатах анализа команды, если команда принята, то вернётся сообщение OK Job_UID, если нет то ERR. Далее сервер обрабатывает команду из очереди и генерирует сообщение об результатах выполнения команды, которые получаются в функции esl_recv_event_timed.
     28----------------------------------------
     29Допустим ответ 3 должен приходить на команду 1. Тогда что происходит при отправке команды 1 - команда отправляется, если сообщение отправлено успешно, то ожидается ответ от сервера в виде сообщения 3. Запрос 2 не может быть отправлен до получения ответа на запрос 1, пока не вернётся ответ на запрос 3, не будет выполняться запрос 2, для того, что из другого потока не был случайно послана команда 2 до получения ответа на отправку команды 1, используется мутекс во время вызова функции esl_send_recv.
     30То есть описанная вами последовательность действий не возможна будет следующая последовательность действий
     311.Клиент отправляет запрос 1 - bgapi command1
     322)3.Клиент получает ответ на запрос 1, о поставке команды в очередь выполнения на сервере FreeSwitch.  - Content-Type: command/reply
     33Reply-Text: +OK Job-UUID: c7709e9c-1517-11dc-842a-d3a3942d3d63
     343)2.Клиент отправляет запрос 2 - bgapi command2
     35Команды 1 и 2 могут вызвать посылку сообщений таких как conference_create, их обрабатывать будут в отдельном потоке событий.