mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-23 20:42:06 +01:00
Notifiers and ProgressListeners
This commit is contained in:
parent
5ce12974c8
commit
3f6df8e6c7
14 changed files with 122 additions and 16 deletions
|
@ -123,15 +123,22 @@ public final class JingleFileTransferManager extends Manager implements JingleDe
|
||||||
return AbstractJingleFileTransfer.NAMESPACE;
|
return AbstractJingleFileTransfer.NAMESPACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void notifyTransfer(AbstractJingleFileTransfer transfer) {
|
||||||
public void notifySessionInitiate(JingleSession session) {
|
|
||||||
JingleContent content = session.getSoleContentOrThrow();
|
|
||||||
AbstractJingleFileTransfer transfer = (AbstractJingleFileTransfer) content.getDescription();
|
|
||||||
|
|
||||||
if (transfer.isOffer()) {
|
if (transfer.isOffer()) {
|
||||||
notifyIncomingFileOfferListeners((JingleIncomingFileOffer) transfer);
|
notifyIncomingFileOfferListeners((JingleIncomingFileOffer) transfer);
|
||||||
} else {
|
} else {
|
||||||
notifyIncomingFileRequestListeners((JingleIncomingFileRequest) transfer);
|
notifyIncomingFileRequestListeners((JingleIncomingFileRequest) transfer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifySessionInitiate(JingleSession session) {
|
||||||
|
JingleContent content = session.getSoleContentOrThrow();
|
||||||
|
notifyTransfer((AbstractJingleFileTransfer) content.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyContentAdd(JingleContent content) {
|
||||||
|
notifyTransfer((AbstractJingleFileTransfer) content.getDescription());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package org.jivesoftware.smackx.jft.controller;
|
package org.jivesoftware.smackx.jft.controller;
|
||||||
|
|
||||||
import org.jivesoftware.smackx.jingle.JingleDescriptionController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by vanitas on 27.07.17.
|
* Created by vanitas on 27.07.17.
|
||||||
*/
|
*/
|
||||||
public interface IncomingFileOfferController extends JingleDescriptionController {
|
public interface IncomingFileOfferController extends JingleFileTransferController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package org.jivesoftware.smackx.jft.controller;
|
package org.jivesoftware.smackx.jft.controller;
|
||||||
|
|
||||||
import org.jivesoftware.smackx.jingle.JingleDescriptionController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by vanitas on 27.07.17.
|
* Created by vanitas on 27.07.17.
|
||||||
*/
|
*/
|
||||||
public interface IncomingFileRequestController extends JingleDescriptionController {
|
public interface IncomingFileRequestController extends JingleFileTransferController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package org.jivesoftware.smackx.jft.controller;
|
||||||
|
|
||||||
|
import org.jivesoftware.smackx.jft.listener.ProgressListener;
|
||||||
|
import org.jivesoftware.smackx.jingle.JingleDescriptionController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by vanitas on 27.07.17.
|
||||||
|
*/
|
||||||
|
public interface JingleFileTransferController extends JingleDescriptionController {
|
||||||
|
|
||||||
|
void addProgressListener(ProgressListener listener);
|
||||||
|
|
||||||
|
void removeProgressListener(ProgressListener listener);
|
||||||
|
}
|
|
@ -3,5 +3,5 @@ package org.jivesoftware.smackx.jft.controller;
|
||||||
/**
|
/**
|
||||||
* Created by vanitas on 27.07.17.
|
* Created by vanitas on 27.07.17.
|
||||||
*/
|
*/
|
||||||
public interface OutgoingFileOfferController {
|
public interface OutgoingFileOfferController extends JingleFileTransferController {
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,5 +3,5 @@ package org.jivesoftware.smackx.jft.controller;
|
||||||
/**
|
/**
|
||||||
* Created by vanitas on 27.07.17.
|
* Created by vanitas on 27.07.17.
|
||||||
*/
|
*/
|
||||||
public interface OutgoingFileRequestController {
|
public interface OutgoingFileRequestController extends JingleFileTransferController {
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
package org.jivesoftware.smackx.jft.internal;
|
package org.jivesoftware.smackx.jft.internal;
|
||||||
|
|
||||||
import org.jivesoftware.smackx.jingle.components.JingleDescription;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.jivesoftware.smackx.jft.controller.JingleFileTransferController;
|
||||||
import org.jivesoftware.smackx.jft.element.JingleFileTransferElement;
|
import org.jivesoftware.smackx.jft.element.JingleFileTransferElement;
|
||||||
|
import org.jivesoftware.smackx.jft.listener.ProgressListener;
|
||||||
|
import org.jivesoftware.smackx.jingle.components.JingleDescription;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by vanitas on 22.07.17.
|
* Created by vanitas on 22.07.17.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractJingleFileTransfer extends JingleDescription<JingleFileTransferElement> {
|
public abstract class AbstractJingleFileTransfer extends JingleDescription<JingleFileTransferElement> implements JingleFileTransferController {
|
||||||
|
|
||||||
public static final String NAMESPACE_V5 = "urn:xmpp:jingle:apps:file-transfer:5";
|
public static final String NAMESPACE_V5 = "urn:xmpp:jingle:apps:file-transfer:5";
|
||||||
public static final String NAMESPACE = NAMESPACE_V5;
|
public static final String NAMESPACE = NAMESPACE_V5;
|
||||||
|
@ -14,4 +20,29 @@ public abstract class AbstractJingleFileTransfer extends JingleDescription<Jingl
|
||||||
public abstract boolean isOffer();
|
public abstract boolean isOffer();
|
||||||
public abstract boolean isRequest();
|
public abstract boolean isRequest();
|
||||||
|
|
||||||
|
protected State state;
|
||||||
|
|
||||||
|
protected final List<ProgressListener> progressListeners = Collections.synchronizedList(new ArrayList<ProgressListener>());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addProgressListener(ProgressListener listener) {
|
||||||
|
progressListeners.add(listener);
|
||||||
|
//TODO: Notify new listener?
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeProgressListener(ProgressListener listener) {
|
||||||
|
progressListeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void notifyProgressListeners(float progress) {
|
||||||
|
for (ProgressListener p : progressListeners) {
|
||||||
|
p.progress(progress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public State getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,4 +31,14 @@ public class JingleIncomingFileOffer extends AbstractJingleFileOffer<RemoteFile>
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOffer() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRequest() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,16 @@ public class JingleIncomingFileRequest extends AbstractJingleFileRequest impleme
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOffer() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRequest() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTransportReady(BytestreamSession bytestreamSession) {
|
public void onTransportReady(BytestreamSession bytestreamSession) {
|
||||||
|
|
||||||
|
|
|
@ -19,4 +19,14 @@ public class JingleOutgoingFileOffer extends AbstractJingleFileOffer<LocalFile>
|
||||||
public void onTransportReady(BytestreamSession bytestreamSession) {
|
public void onTransportReady(BytestreamSession bytestreamSession) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOffer() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRequest() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,16 @@ public class JingleOutgoingFileRequest extends AbstractJingleFileRequest impleme
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOffer() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRequest() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTransportReady(BytestreamSession bytestreamSession) {
|
public void onTransportReady(BytestreamSession bytestreamSession) {
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package org.jivesoftware.smackx.jft.listener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by vanitas on 27.07.17.
|
||||||
|
*/
|
||||||
|
public interface ProgressListener {
|
||||||
|
|
||||||
|
void started();
|
||||||
|
|
||||||
|
void progress(float percent);
|
||||||
|
|
||||||
|
void finished();
|
||||||
|
}
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smackx.jingle;
|
package org.jivesoftware.smackx.jingle;
|
||||||
|
|
||||||
|
import org.jivesoftware.smackx.jingle.components.JingleContent;
|
||||||
import org.jivesoftware.smackx.jingle.components.JingleSession;
|
import org.jivesoftware.smackx.jingle.components.JingleSession;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,4 +27,6 @@ public interface JingleDescriptionManager {
|
||||||
String getNamespace();
|
String getNamespace();
|
||||||
|
|
||||||
void notifySessionInitiate(JingleSession session);
|
void notifySessionInitiate(JingleSession session);
|
||||||
|
|
||||||
|
void notifyContentAdd(JingleContent content);
|
||||||
}
|
}
|
||||||
|
|
|
@ -359,6 +359,8 @@ public class JingleSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final JingleContent content : descriptionCategory.getValue()) {
|
for (final JingleContent content : descriptionCategory.getValue()) {
|
||||||
|
descriptionManager.notifyContentAdd(content);
|
||||||
|
|
||||||
ContentAddCallback callback = new ContentAddCallback() {
|
ContentAddCallback callback = new ContentAddCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void acceptContentAdd() {
|
public void acceptContentAdd() {
|
||||||
|
@ -372,7 +374,7 @@ public class JingleSession {
|
||||||
// TODO: Send content-reject
|
// TODO: Send content-reject
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
descriptionManager.notifySessionInitiate();
|
descriptionManager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue