UploadDataProvider

abstract class UploadDataProvider : Closeable


Yerleştiricinin UrlRequest için bir yükleme gövdesi sağlamasına olanak tanıyan soyut sınıf. Hem parçalı olmayan (boyutu önceden bilinen) hem de parçalı (boyutu önceden bilinmeyen) yüklemeleri destekler. Tüm sunucuların parçalı yüklemeyi desteklemediğini unutmayın.

Yükleme işlemi her zaman parçalara ayrılır (veriler birden fazla kez gönderilirse birden fazla yükleme boyunca) veya hiçbir zaman parçalara ayrılmaz.

Özet

Herkese açık oluşturucular

Herkese açık işlevler

Unit

Bu UploadDataProvider bir istek tarafından artık gerekli olmadığında çağrılır. Böylece kaynaklar (ör. dosya) açıkça serbest bırakılabilir.

abstract Long

Bu, parçalı olmayan bir yükleme ise yüklemenin uzunluğunu döndürür.

abstract Unit
read(uploadDataSink: UploadDataSink!, byteBuffer: ByteBuffer!)

Yükleme verilerini byteBuffer'ya okur.

abstract Unit
rewind(uploadDataSink: UploadDataSink!)

Yükleme verilerini başa sarar.

Herkese açık oluşturucular

UploadDataProvider

UploadDataProvider()

Herkese açık işlevler

kapat

fun close(): Unit

Bu UploadDataProvider bir istek tarafından artık gerekli olmadığında çağrılır. Böylece kaynaklar (ör. dosya) açıkça serbest bırakılabilir.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa Bu işlem, istek henüz tamamlanmamışsa isteğin başarısız olmasına neden olur. Aksi takdirde istek kaydedilir.

getLength

abstract fun getLength(): Long

Bu, parçalı olmayan bir yükleme ise yüklemenin uzunluğunu döndürür. Bu, parçalı bir yükleme ise her zaman -1 döndürmelidir.

İadeler
Long

Parçalar halinde yüklenmeyen yüklemeler için yükleme süresi, aksi takdirde -1.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa

read

abstract fun read(uploadDataSink: UploadDataSink!, byteBuffer: ByteBuffer!): Unit

Yükleme verilerini byteBuffer'ya okur. Tamamlandığında arabelleğin konumu, okunan baytların sonuna güncellenir. Arabelleğin sınırı değiştirilmez. Bu yöntemin her çağrısından sonra uploadDataSink için eşzamanlı veya eşzamansız tek bir çağrı yapılmalıdır: Başarı durumunda onReadSucceeded, hata durumunda onReadError. Bu yöntemlerden biri veya diğeri çağrılana kadar ne okuma ne de geri sarma işlemi çağrılmaz. İlişkili UrlRequest iptal edilmiş olsa bile kaynakların güvenli bir şekilde serbest bırakılabilmesi için yine de birinin veya diğerinin çağrılması gerekir. İstisna oluşturmak da kaynakların serbest bırakılmasına ve isteğin hata vermesine neden olur.

Not: Parçalar halinde yüklenmeyen dosyalarda onReadSucceeded yalnızca okuma işlemi başarılı olduğunda ve byteBuffer içine en az bir bayt okunduğunda çağrılmalıdır. Parçalı yüklemelerde (verilerin boyutu bilinmiyor) son parça için boş bir bayt arabelleğiyle onReadSucceeded çağrılmasına izin verilir.

Parametreler
uploadDataSink: UploadDataSink!

Okuma işlemi tamamlandığında bildirilecek nesne.

byteBuffer: ByteBuffer!

Okunan baytların kopyalanacağı arabellek. byteBuffer'ın sınırını değiştirmeyin.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa onFailed, CallbackException'nin nedeni olarak atılan istisna ayarlanmış şekilde çağrılır.

geri sar

abstract fun rewind(uploadDataSink: UploadDataSink!): Unit

Yükleme verilerini başa sarar. Cronet, yükleme verisi sağlayıcının read hiç çağrılmamış gibi eşdeğer bir durumda olmasını gerektirdiğinde çağrılır.

İşlemin tamamlandığını belirtmek için bu işlevin uygulamaları, başarıyı belirtmek üzere onRewindSucceeded, başarısızlığı belirtmek üzere ise onRewindError işlevini çağırmalıdır. İlişkili UrlRequest iptal edilmiş olsa bile kaynakların güvenli bir şekilde serbest bırakılabilmesi için yine de birinin çağrılması gerekir. Yöntemden istisna oluşturmak, onRewindError yöntemini çağırmaya eş değerdir. Geri sarma desteklenmiyorsa (ör. tek seferlik bir akıştan okuma yapılıyorsa) bu işlev hemen onRewindError işlevini çağırmalıdır.

Uygulayıcı, önceki paragrafta açıklandığı gibi geri sarma işleminin tamamlandığını havuz'a bildirene kadar ne read ne de eşzamanlı bir rewind çağrısının yayınlanmayacağını güvenle varsayabilir.

Bu yöntem, gövdenin birden fazla kez yüklenmesi gerektiğinde Cronet tarafından dahili olarak kullanılır. Bu durum, yönlendirmeleri takip ederken veya zaman aşımı ya da ağ bağlantısı kesildikten sonra istekleri yeniden denerken gibi birçok farklı durumda ortaya çıkabilir. Geri sarma özelliğinin uygulanması genellikle isteğe bağlı olsa da bu özelliği gerektiren istekler, geri sarma uygulanmadığı sürece başarısız olur.

Parametreler
uploadDataSink: UploadDataSink!

Geri sarma işlemi başarıyla veya başka bir şekilde tamamlandığında bildirim gönderilecek nesne.

Verdiği hatalar
java.io.IOException

işlem sırasında herhangi bir IOException oluştuysa onFailed, CallbackException'nin nedeni olarak atılan istisna ayarlanmış şekilde çağrılır.