X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/bb257ec72911fa0418c7093863bac51d589419fa..053aad5ae17a1ad7a15218c220810e6b369fea4c:/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java diff --git a/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java b/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java index cea32a6c..8d3912d9 100644 --- a/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java +++ b/src/eu/alefzero/webdav/ChunkFromFileChannelRequestEntity.java @@ -3,7 +3,7 @@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or + * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -30,6 +30,8 @@ import java.util.Set; import org.apache.commons.httpclient.methods.RequestEntity; +import com.owncloud.android.network.ProgressiveDataTransferer; + import eu.alefzero.webdav.OnDatatransferProgressListener; import android.util.Log; @@ -40,7 +42,7 @@ import android.util.Log; * * @author David A. Velasco */ -public class ChunkFromFileChannelRequestEntity implements RequestEntity { +public class ChunkFromFileChannelRequestEntity implements RequestEntity, ProgressiveDataTransferer { private static final String TAG = ChunkFromFileChannelRequestEntity.class.getSimpleName(); @@ -90,16 +92,25 @@ public class ChunkFromFileChannelRequestEntity implements RequestEntity { return true; } - public void addOnDatatransferProgressListener(OnDatatransferProgressListener listener) { - mDataTransferListeners.add(listener); + @Override + public void addDatatransferProgressListener(OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.add(listener); + } } - public void addOnDatatransferProgressListeners(Collection listeners) { - mDataTransferListeners.addAll(listeners); + @Override + public void addDatatransferProgressListeners(Collection listeners) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.addAll(listeners); + } } - public void removeOnDatatransferProgressListener(OnDatatransferProgressListener listener) { - mDataTransferListeners.remove(listener); + @Override + public void removeDatatransferProgressListener(OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.remove(listener); + } } @@ -116,9 +127,11 @@ public class ChunkFromFileChannelRequestEntity implements RequestEntity { out.write(mBuffer.array(), 0, readCount); mBuffer.clear(); mTransferred += readCount; - it = mDataTransferListeners.iterator(); - while (it.hasNext()) { - it.next().onTransferProgress(readCount, mTransferred, size, mFile.getName()); + synchronized (mDataTransferListeners) { + it = mDataTransferListeners.iterator(); + while (it.hasNext()) { + it.next().onTransferProgress(readCount, mTransferred, size, mFile.getName()); + } } }