summaryrefslogtreecommitdiffstats
blob: d20550d01b4ff4a0d85c0e9c16f963c45bc612a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
 * Copyright (c) 2013-2015 Isode Limited.
 * All rights reserved.
 * See the COPYING file for more information.
 */
/*
 * Copyright (c) 2015 Tarun Gupta.
 * Licensed under the simplified BSD license.
 * See Documentation/Licenses/BSD-simplified.txt for more information.
 */

package com.isode.stroke.filetransfer;

import com.isode.stroke.elements.JingleS5BTransportPayload;
import com.isode.stroke.signals.Signal2;
import com.isode.stroke.signals.Signal3;
import com.isode.stroke.elements.ErrorPayload;
import com.isode.stroke.jid.JID;
import java.util.Vector;

/**
 * @brief The FileTransferTransporter class is an abstract factory definition
 * to generate SOCKS5 bytestream transports or IBB bytestreams for use in file
 * transfers.
 */
public abstract class FileTransferTransporter {

	public abstract void startGeneratingLocalCandidates();
	public abstract void stopGeneratingLocalCandidates();

	public abstract void addRemoteCandidates(
					final Vector<JingleS5BTransportPayload.Candidate> c, final String s);
	public abstract void startTryingRemoteCandidates();
	public abstract void stopTryingRemoteCandidates();

	public abstract void startActivatingProxy(final JID proxy);
	public abstract void stopActivatingProxy();

	public abstract TransportSession createIBBSendSession(
					final String sessionID, int blockSize, ReadBytestream r);
	public abstract TransportSession createIBBReceiveSession(
					final String sessionID, int size, WriteBytestream w);
	public abstract TransportSession createRemoteCandidateSession(
					ReadBytestream r, final JingleS5BTransportPayload.Candidate candidate);
	public abstract TransportSession createRemoteCandidateSession(
					WriteBytestream w, final JingleS5BTransportPayload.Candidate candidate);
	public abstract TransportSession createLocalCandidateSession(
					ReadBytestream r, final JingleS5BTransportPayload.Candidate candidate);
	public abstract TransportSession createLocalCandidateSession(
					WriteBytestream w, final JingleS5BTransportPayload.Candidate candidate);

	public final Signal3<String /* sessionID */, Vector<JingleS5BTransportPayload.Candidate>, String /* dstAddr */> onLocalCandidatesGenerated = new Signal3<String, Vector<JingleS5BTransportPayload.Candidate>, String>();
	public final Signal2<String /* sessionID */, JingleS5BTransportPayload.Candidate> onRemoteCandidateSelectFinished = new Signal2<String, JingleS5BTransportPayload.Candidate>();
	public final Signal2<String /* sessionID */, ErrorPayload> onProxyActivated = new Signal2<String, ErrorPayload>();
}