/** * DelegateMegaTransferListener.java * Delegation pattern for MegaTransferListener * * (c) 2013-2014 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGA SDK - Client Access Engine. * * Applications using the MEGA API must present a valid application key * and comply with the the rules set forth in the Terms of Service. * * The MEGA SDK is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ package nz.mega.sdk; class DelegateMegaTransferListener extends MegaTransferListener { MegaApiJava megaApi; MegaTransferListenerInterface listener; boolean singleListener; DelegateMegaTransferListener(MegaApiJava megaApi, MegaTransferListenerInterface listener, boolean singleListener) { this.megaApi = megaApi; this.listener = listener; this.singleListener = singleListener; } MegaTransferListenerInterface getUserListener() { return listener; } @Override public void onTransferStart(MegaApi api, MegaTransfer transfer) { if(listener != null) { final MegaTransfer megaTransfer = transfer.copy(); megaApi.runCallback(new Runnable() { public void run() { listener.onTransferStart(megaApi, megaTransfer); } }); } } @Override public void onTransferFinish(MegaApi api, MegaTransfer transfer, MegaError e) { if(listener != null) { final MegaTransfer megaTransfer = transfer.copy(); final MegaError megaError = e.copy(); megaApi.runCallback(new Runnable() { public void run() { listener.onTransferFinish(megaApi, megaTransfer, megaError); } }); } if (singleListener){ megaApi.privateFreeTransferListener(this); } } @Override public void onTransferUpdate(MegaApi api, MegaTransfer transfer) { if(listener != null) { final MegaTransfer megaTransfer = transfer.copy(); megaApi.runCallback(new Runnable() { public void run() { listener.onTransferUpdate(megaApi, megaTransfer); } }); } } @Override public void onTransferTemporaryError(MegaApi api, MegaTransfer transfer, MegaError e) { if(listener != null) { final MegaTransfer megaTransfer = transfer.copy(); final MegaError megaError = e.copy(); megaApi.runCallback(new Runnable() { public void run() { listener.onTransferTemporaryError(megaApi, megaTransfer, megaError); } }); } } public boolean onTransferData(MegaApi api, MegaTransfer transfer, byte[] buffer) { if(listener != null) { final MegaTransfer megaTransfer = transfer.copy(); return listener.onTransferData(megaApi, megaTransfer, buffer); } return false; } }