public void addDatatransferProgressListener (OnDatatransferProgressListener listener) { synchronized (mDataTransferListeners) { mDataTransferListeners.add(listener); } if (mFileRequestBody != null) { mFileRequestBody.addDatatransferProgressListener(listener); } }
public void removeDatatransferProgressListener(OnDatatransferProgressListener listener) { synchronized (mDataTransferListeners) { mDataTransferListeners.remove(listener); } if (mFileRequestBody != null) { mFileRequestBody.removeDatatransferProgressListener(listener); } }
protected RemoteOperationResult<? extends Object> uploadFile(OwnCloudClient client) throws Exception { File fileToUpload = new File(mLocalPath); MediaType mediaType = MediaType.parse(mMimeType); mFileRequestBody = new FileRequestBody(fileToUpload, mediaType); synchronized (mDataTransferListeners) { mFileRequestBody.addDatatransferProgressListeners(mDataTransferListeners); } if (mRequiredEtag != null && mRequiredEtag.length() > 0) { mPutMethod.addRequestHeader(HttpConstants.IF_MATCH_HEADER, mRequiredEtag); } mPutMethod.addRequestHeader(HttpConstants.OC_TOTAL_LENGTH_HEADER, String.valueOf(fileToUpload.length())); mPutMethod.addRequestHeader(HttpConstants.OC_X_OC_MTIME_HEADER, mFileLastModifTimestamp); mPutMethod.setRequestBody(mFileRequestBody); int status = client.executeHttpMethod(mPutMethod); if (isSuccess(status)) { return new RemoteOperationResult<>(OK); } else { // synchronization failed return new RemoteOperationResult<>(mPutMethod); } }
mFileRequestBody.addDatatransferProgressListeners(mDataTransferListeners);