Версия: 1.0.3
Описание:
Модуль является обёрткой над библиотекой libcurl. Поддерживает ssl и позволяет делать передачи в неблокирующем режиме.
В новой версии отсутствует необходимость использования SoLoader (обязательно нужно отключить). Работает как с ReHLDS, так и с HLDS
Примечание для старых Linux:
Если в системе стоит версиия glibc ниже 2.17 (Ubuntu 12.04, CentOS 6.10 и др.) вы можете использовать библиотеку из архива amxx_curl_linux_v1.0.3.glibc.2.12.c-ares.zip.
Функции:
Все нативы выполняет ровно то, что и их Вы должны зарегистрироваться, чтобы видеть ссылки., за исключением некоторых:
- Код: Выделить всё
native void:curl_easy_perform(const CURL:handle, const callbackComplite[], const data[] = {}, const data_len = 0)
Функция начинает передачу, и по завершении передачи будет вызван callbackComplite.
Третьим параметром можно указать массив с любыми, он будет передан без изменений в callbackComplite, четвертый параметр размер массива.
Если data установлена, тогда колбэк должен иметь такую сигнатуру:
- Код: Выделить всё
public compliteCallback(CURL:curl, CURLcode:code, data[])
Если не установлена, тогда тогда сигнатура должна быть такой:
- Код: Выделить всё
public compliteCallback(CURL:curl, CURLcode:code)
Общие примечания:
1) Вы НЕ должны вызывать curl_easy_cleanup и другие функции очистки пока передача не завершилась;
2) Пока нет возможности реально установить/получить значение переменной типа curl_off_t, сейчас происходит преобразование типа к cell (обычная ячейка amxx), но это не очень правильно. Значения зачастую будут некорректными;
3) Всегда определяйте опцию CURLOPT_BUFFERSIZE, если используете колбэк WRITEFUNCTION укажите в качестве параметра размер буфера не более 1024, иначе рискуете получить ошибки stack error, возможно даже повесить сервер. Если вы получаете ошибки stack error при использовании других колбэков, то можно определить в плагине #pragma dynamic 30000;
4) Не забывайте, что вам необходимо очищать память по указателям для curl_slist и curl_httppost с помощью функций curl_slist_free_all и curl_formfree соответственно;
5) Если к моменту смены карты остались незавершенные передачи, то будет прерван вызов всех установленных колбэков и модуль встанет в ожидание завершения всех передач.
Рекомендации:
1) Если планируется "долгосрочная" передача, то можно временно убрать лимит игры на карте, когда передача завершится восстановить;
2) Вы можете использовать 1 дескриптор curl несколько раз для одного url;
3) Используйте curl_easy_setopt(curl, CURLOPT_VERBOSE, 1) для отладки плагина, если затрудняетесь определить причину неполадки в плагине (По-умолчания вывод дебаг информации будет осуществляться в консоль сервера, вы можете определить колбэк CURLOPT_DEBUGFUNCTION для изменения вывода).
Roadmap:
1) Улучшение производительности: избавление от потоков, использование библиотеки asio, использование интерфейса curl multi;
2) Добавление более простых интерфейсов для amxx плагинов;
3) Улучшение скриптов сборки.
Скачать: Вы должны зарегистрироваться, чтобы видеть ссылки.
Исходники: Вы должны зарегистрироваться, чтобы видеть ссылки.