К содержимому

[Модуль Amxx] Curl (Windows & Linux)

Модуль является обёрткой над библиотекой libcurl. Поддерживает ssl и позволяет делать передачи в неблокирующем режиме. Функции: Все нативы выполняет ровно то что и их C аналоги, за исключением некоторых: Функция начинает передачу, и по завершении передачи будет вызван callback callbackComplite…

МодульCounter-Strike 1.6Просмотры:41

Описание

Модуль является обёрткой над библиотекой libcurl. Поддерживает ssl и позволяет делать передачи в неблокирующем режиме.

Функции:
Все нативы выполняет ровно то что и их C аналоги, за исключением некоторых:

Pawn
native void:curl_easy_perform(const CURL:handle, const callbackComplite[], const data[] = {}, const data_len = 0)

Функция начинает передачу, и по завершении передачи будет вызван callback callbackComplite.
Третьим параметром можно указать массив с т.н. юзердатой, он будет передан в callbackComplite, четвертый параметр размер массива.

Если data установлена, тогда callback должен иметь такую сигнатуру:

Pawn
public compliteCallback(CURL:curl, CURLcode:code, data[])

Если не установлена, тогда тогда сигнатура должна быть такой:

Pawn
public compliteCallback(CURL:curl, CURLcode:code)

Автор: Polarhigh
Скачать: GitHub releases
Исходники: https://github.com/Polarhigh/AmxxCurl
Примеры: https://github.com/Polarhigh/AmxxCurl/tree/master/amx_examples

Некоторые примечания и рекомендации под катом.

Общие примечания:
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) Если к моменту смены карты остались незавершенные передачи, то сервер будет ожидать завершения всех передач, колбэк callbackComplite будет вызван после plugin_end.

Рекомендации:
1) Вы можете использовать 1 дескриптор curl несколько раз для одного url.
2) Используйте curl_easy_setopt(curl, CURLOPT_VERBOSE, 1) для отладки плагина, если затрудняетесь определить причину неполадки в плагине. (По-умолчания вывод дебаг информации будет осуществляться в консоль сервера, вы можете определить колбэк CURLOPT_DEBUGFUNCTION для изменения вывода)

Похожие

Модульv1.5.0

AmxxEasyHttp

AmxxEasyHttp is a module for amxmodx which provides an easy to use API for HTTP, HTTPS and FTP requests.

Что такое BMOD? BMOD позволяет amxx программистам использовать альтернативный физический движок (Bullet). Немного видео для наглядности: https://youtube.com/watch?v=Nn26KkoIGNY https://youtube.com/watch?v=CUmNRsVro1U https://youtube.com/watch?v=vUCIKGlyDBQ https://youtube.com/watch?v=fAJlHJehlI8…