easy:SetOpt_ReadFunction(read_callback[, userdata])
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.
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.