Bezeichnung
easy:SetOpt_ReadFunction -- liest den Callback für Daten-Uploads
Übersicht
easy:SetOpt_ReadFunction(read_callback[, userdata])
Beschreibung
Übergeben Sie eine Callback-Funktion. Diese Callback-Funktion wird von libcurl aufgerufen, sobald Daten gelesen werden müssen, um sie an den Peer zu senden - wie wenn Sie ihn auffordern, Daten auf den Server hochzuladen oder zu senden.

Der erste Parameter, der an Ihre Callback-Funktion übergeben wird, ist eine Ganzzahl, die die Anzahl der zu lesenden Bytes enthält. Wenn Sie das optionale Argument userdata übergeben, wird der in userdata übergebene Wert als zweiter Parameter an Ihre Callback-Funktion übergeben. Der Parameter userdata kann einen beliebigen Typ haben.

Ihre Funktion muss eine Zeichenkette zurückgeben, die die gelesenen Daten enthält. Dies kann weniger Bytes als angefordert enthalten, es muss jedoch mindestens ein Byte in der Rückgabezeichenkette enthalten sein, sonst wird die Übertragung abgebrochen.

Wenn Sie die aktuelle Übertragung stoppen, indem Sie eine leere Zeichenkette zurückgeben (d.h. bevor der Server sie erwartet hat, z.B. wenn Sie angegeben haben, dass Sie N Bytes hochladen werden und Sie weniger als N Bytes hochladen), kann es vorkommen, dass der Server "hangs" (hängt) und auf den Rest der Daten wartet, die nicht kommen werden.

Der lesende Callback kann #CURL_READFUNC_ABORT zurückgeben, um die aktuelle Operation sofort zu stoppen, was zu einem #CURLE_ABORTED_BY_CALLBACK-Fehlercode der Übertragung führt.

Der Callback kann #CURL_READFUNC_PAUSE zurückgeben, um das Lesen von dieser Verbindung anzuhalten. Weitere Informationen finden Sie unter easy:Pause().

Fehler: Wenn Sie TFTP-Uploads durchführen, müssen Sie genau die Datenmenge zurückgeben, die der Callback haben möchte. Andernfalls wird die Übertragung vom Server als endgültiges Paket betrachtet und endet dort.

Eingaben
read_callback
Eingabewert
userdata
optional: Benutzerdaten, die an die Callback-Funktion übergeben werden sollen
Beispiel
Function p_ReadData(len)
   If readlen + len > totallen Then len = totallen - readlen
   If len > 0
      readlen = readlen + len
      Return(ReadBytes(1, len))
   Else
      Return("")
   EndIf
EndFunction
readlen = 0
totallen = FileLength(1)
e:SetOpt_ReadFunction(p_ReadData)
Der obige Code installiert eine Lesefunktion, die alle Daten aus der Datei mit dem Identifikator 1 liest.

Navigation zeigen