UploadDataProvider

abstract class UploadDataProvider : Closeable


삽입자가 UrlRequest에 업로드 본문을 제공할 수 있도록 하는 추상 클래스입니다. 청크되지 않은 업로드 (크기를 미리 알고 있음)와 청크된 업로드 (크기를 미리 알 수 없음)를 모두 지원합니다. 일부 서버는 청크된 업로드를 지원하지 않습니다.

업로드는 데이터가 두 번 이상 전송되는 경우 여러 업로드에서 항상 청크되거나 청크되지 않습니다.

요약

공개 생성자

공개 함수

Unit

이 UploadDataProvider가 더 이상 요청에 필요하지 않을 때 호출되므로 파일과 같은 리소스를 명시적으로 해제할 수 있습니다.

abstract Long

청크되지 않은 업로드인 경우 업로드 길이를 반환합니다.

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

업로드 데이터를 byteBuffer로 읽습니다.

abstract Unit
rewind(uploadDataSink: UploadDataSink!)

업로드 데이터를 처음으로 되감습니다.

공개 생성자

UploadDataProvider

UploadDataProvider()

공개 함수

닫기

fun close(): Unit

이 UploadDataProvider가 더 이상 요청에 필요하지 않을 때 호출되므로 파일과 같은 리소스를 명시적으로 해제할 수 있습니다.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 아직 완료되지 않은 경우 요청이 실패합니다. 그렇지 않으면 로깅됩니다.

getLength

abstract fun getLength(): Long

청크되지 않은 업로드인 경우 업로드 길이를 반환합니다. 청크된 업로드인 경우 항상 -1을 반환해야 합니다.

반환
Long

청크되지 않은 업로드의 업로드 길이, 그렇지 않은 경우 -1

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우

읽음

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

업로드 데이터를 byteBuffer로 읽습니다. 완료되면 버퍼의 위치가 읽은 바이트의 끝으로 업데이트됩니다. 버퍼의 한도는 변경되지 않습니다. 이 메서드의 각 호출은 성공 시 uploadDataSink: onReadSucceeded 또는 실패 시 onReadError에 대한 동기 또는 비동기 단일 호출이 뒤따라야 합니다. 이러한 메서드 중 하나 또는 다른 메서드가 호출될 때까지 읽기 또는 되감기가 호출되지 않습니다. 연결된 UrlRequest가 취소되더라도 리소스를 안전하게 해제하기 전에 하나 또는 다른 하나를 호출해야 합니다. 예외를 발생시키면 리소스가 해제되고 요청이 오류가 발생합니다.

참고: 청크되지 않은 업로드의 경우 읽기가 성공하고 하나 이상의 바이트가 byteBuffer로 읽힌 경우에만 onReadSucceeded를 호출해야 합니다. 청크된 업로드 (데이터 크기를 알 수 없음)의 경우 빈 바이트 버퍼가 있는 마지막 청크에 대해 onReadSucceeded를 호출할 수 있습니다.

매개변수
uploadDataSink: UploadDataSink!

읽기가 완료되면 알릴 객체입니다.

byteBuffer: ByteBuffer!

읽은 바이트를 복사할 버퍼입니다. byteBuffer의 한도를 변경하지 마세요.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 발생한 예외가 CallbackException의 원인으로 설정된 상태로 onFailed가 호출됩니다.

되감기

abstract fun rewind(uploadDataSink: UploadDataSink!): Unit

업로드 데이터를 처음으로 되감습니다. Cronet에서 업로드 데이터 제공자가 아직 read가 호출되지 않은 것과 동일한 상태에 있어야 할 때 호출됩니다.

작업이 완료되었음을 알리려면 이 함수의 구현에서 onRewindSucceeded를 호출하여 성공을 나타내거나 실패 시 onRewindError를 호출해야 합니다. 연결된 UrlRequest가 취소되더라도 리소스를 안전하게 해제하기 전에 하나 또는 다른 하나를 호출해야 합니다. 메서드에서 예외를 발생시키는 것은 onRewindError를 호출하는 것과 같습니다. 되감기가 지원되지 않는 경우 (예: 일회성 스트림에서 읽는 경우) onRewindError를 즉시 호출해야 합니다.

구현자는 이전 단락에 설명된 대로 되감기가 완료되었음을 싱크에 알릴 때까지 read 또는 동시 rewind 호출이 실행되지 않는다고 안전하게 가정할 수 있습니다.

이 메서드는 본문을 여러 번 업로드해야 하는 경우 Cronet에서 내부적으로 사용됩니다. 이는 리디렉션을 따르거나 제한 시간 또는 네트워크 연결 해제 후 요청을 다시 시도하는 경우와 같이 다양한 상황에서 발생할 수 있습니다. 되감기 구현은 일반적으로 선택사항이지만 되감기가 구현되지 않으면 결국 되감기가 필요한 요청이 실패합니다.

매개변수
uploadDataSink: UploadDataSink!

되감기 작업이 성공적으로 완료되었는지 여부를 알릴 객체입니다.

생성 값
java.io.IOException

프로세스 중에 IOException이 발생한 경우 발생한 예외가 CallbackException의 원인으로 설정된 상태로 onFailed가 호출됩니다.