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