diff options
| author | Alex Clayton <alex.clayton@isode.com> | 2016-03-11 17:05:43 (GMT) |
|---|---|---|
| committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-14 15:33:25 (GMT) |
| commit | de2704f8dfd9b807b37e72e61f2042a5e71227c5 (patch) | |
| tree | 8694b4ea245a6f7fa7813f5ac8b3e045520378c6 /src/com | |
| parent | a0a0b9fd74f6d99da1c756b36aad6cc0122f011b (diff) | |
| download | stroke-de2704f8dfd9b807b37e72e61f2042a5e71227c5.zip stroke-de2704f8dfd9b807b37e72e61f2042a5e71227c5.tar.bz2 | |
Add FileTransfer.getState method
As per swiften patch of same name
(cb62de17d1e17fd3049a6bc8155a100574a42a85) add getState() method to
FileTransfer interface.
Test-information: Unit tests pass ok.
Change-Id: I27db4e60c3a8df251b813c90fc4a2e029762082d
Diffstat (limited to 'src/com')
3 files changed, 72 insertions, 59 deletions
diff --git a/src/com/isode/stroke/filetransfer/FileTransfer.java b/src/com/isode/stroke/filetransfer/FileTransfer.java index 8572d93..e12b07d 100644 --- a/src/com/isode/stroke/filetransfer/FileTransfer.java +++ b/src/com/isode/stroke/filetransfer/FileTransfer.java | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * See Documentation/Licenses/BSD-simplified.txt for more information. | 4 | * See Documentation/Licenses/BSD-simplified.txt for more information. |
| 5 | */ | 5 | */ |
| 6 | /* | 6 | /* |
| 7 | * Copyright (c) 2013-2015 Isode Limited. | 7 | * Copyright (c) 2013-2016 Isode Limited. |
| 8 | * All rights reserved. | 8 | * All rights reserved. |
| 9 | * See the COPYING file for more information. | 9 | * See the COPYING file for more information. |
| 10 | */ | 10 | */ |
| @@ -64,4 +64,7 @@ public interface FileTransfer { | |||
| 64 | public long getFileSizeInBytes(); | 64 | public long getFileSizeInBytes(); |
| 65 | 65 | ||
| 66 | public void setFileInfo(final String name, long size); | 66 | public void setFileInfo(final String name, long size); |
| 67 | |||
| 68 | public State getState(); | ||
| 69 | |||
| 67 | } | 70 | } |
diff --git a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java index 92b185d..f7f9c70 100644 --- a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java +++ b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2010-2015 Isode Limited. | 2 | * Copyright (c) 2010-2016 Isode Limited. |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * See the COPYING file for more information. | 4 | * See the COPYING file for more information. |
| 5 | */ | 5 | */ |
| @@ -69,7 +69,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 69 | 69 | ||
| 70 | private JingleContentPayload initialContent; | 70 | private JingleContentPayload initialContent; |
| 71 | private CryptoProvider crypto; | 71 | private CryptoProvider crypto; |
| 72 | private State state; | 72 | private State internalState; |
| 73 | private JingleFileTransferDescription description; | 73 | private JingleFileTransferDescription description; |
| 74 | private WriteBytestream stream; | 74 | private WriteBytestream stream; |
| 75 | private long receivedBytes; | 75 | private long receivedBytes; |
| @@ -93,7 +93,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 93 | super(session, toJID, transporterFactory); | 93 | super(session, toJID, transporterFactory); |
| 94 | this.initialContent = content; | 94 | this.initialContent = content; |
| 95 | this.crypto = crypto; | 95 | this.crypto = crypto; |
| 96 | this.state = State.Initial; | 96 | this.internalState = State.Initial; |
| 97 | this. receivedBytes = 0; | 97 | this. receivedBytes = 0; |
| 98 | this.hashCalculator = null; | 98 | this.hashCalculator = null; |
| 99 | this.description = initialContent.getDescription(new JingleFileTransferDescription()); | 99 | this.description = initialContent.getDescription(new JingleFileTransferDescription()); |
| @@ -125,7 +125,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 125 | @Override | 125 | @Override |
| 126 | public void accept(WriteBytestream stream, final FileTransferOptions options) { | 126 | public void accept(WriteBytestream stream, final FileTransferOptions options) { |
| 127 | logger_.fine("\n"); | 127 | logger_.fine("\n"); |
| 128 | if (!State.Initial.equals(state)) { logger_.warning("Incorrect state \n"); return; } | 128 | if (!State.Initial.equals(internalState)) { logger_.warning("Incorrect state \n"); return; } |
| 129 | 129 | ||
| 130 | assert(this.stream == null); | 130 | assert(this.stream == null); |
| 131 | this.stream = stream; | 131 | this.stream = stream; |
| @@ -147,7 +147,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 147 | logger_.fine("Got S5B transport as initial payload.\n"); | 147 | logger_.fine("Got S5B transport as initial payload.\n"); |
| 148 | setTransporter(transporterFactory.createResponderTransporter(getInitiator(), getResponder(), s5bTransport.getSessionID(), options)); | 148 | setTransporter(transporterFactory.createResponderTransporter(getInitiator(), getResponder(), s5bTransport.getSessionID(), options)); |
| 149 | transporter.addRemoteCandidates(s5bTransport.getCandidates(), s5bTransport.getDstAddr()); | 149 | transporter.addRemoteCandidates(s5bTransport.getCandidates(), s5bTransport.getDstAddr()); |
| 150 | setState(State.GeneratingInitialLocalCandidates); | 150 | setInternalState(State.GeneratingInitialLocalCandidates); |
| 151 | transporter.startGeneratingLocalCandidates(); | 151 | transporter.startGeneratingLocalCandidates(); |
| 152 | } | 152 | } |
| 153 | else if(initialContent.getTransport(new JingleIBBTransportPayload()) != null) { | 153 | else if(initialContent.getTransport(new JingleIBBTransportPayload()) != null) { |
| @@ -187,14 +187,14 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 187 | @Override | 187 | @Override |
| 188 | public void cancel() { | 188 | public void cancel() { |
| 189 | logger_.fine("\n"); | 189 | logger_.fine("\n"); |
| 190 | terminate(State.Initial.equals(state) ? JinglePayload.Reason.Type.Decline : JinglePayload.Reason.Type.Cancel); | 190 | terminate(State.Initial.equals(internalState) ? JinglePayload.Reason.Type.Decline : JinglePayload.Reason.Type.Cancel); |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | protected void startTransferViaRemoteCandidate() { | 193 | protected void startTransferViaRemoteCandidate() { |
| 194 | logger_.fine("\n"); | 194 | logger_.fine("\n"); |
| 195 | 195 | ||
| 196 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(ourCandidateChoice.type)) { | 196 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(ourCandidateChoice.type)) { |
| 197 | setState(State.WaitingForPeerProxyActivate); | 197 | setInternalState(State.WaitingForPeerProxyActivate); |
| 198 | } | 198 | } |
| 199 | else { | 199 | else { |
| 200 | startTransferring(createRemoteCandidateSession()); | 200 | startTransferring(createRemoteCandidateSession()); |
| @@ -205,7 +205,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 205 | logger_.fine("\n"); | 205 | logger_.fine("\n"); |
| 206 | 206 | ||
| 207 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(theirCandidateChoice.type)) { | 207 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(theirCandidateChoice.type)) { |
| 208 | setState(State.WaitingForLocalProxyActivate); | 208 | setInternalState(State.WaitingForLocalProxyActivate); |
| 209 | transporter.startActivatingProxy(theirCandidateChoice.jid); | 209 | transporter.startActivatingProxy(theirCandidateChoice.jid); |
| 210 | } | 210 | } |
| 211 | else { | 211 | else { |
| @@ -224,11 +224,11 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | protected void stopAll() { | 226 | protected void stopAll() { |
| 227 | if (!State.Initial.equals(state)) { | 227 | if (!State.Initial.equals(internalState)) { |
| 228 | writeStreamDataReceivedConnection.disconnect(); | 228 | writeStreamDataReceivedConnection.disconnect(); |
| 229 | hashCalculator = null; | 229 | hashCalculator = null; |
| 230 | } | 230 | } |
| 231 | switch (state) { | 231 | switch (internalState) { |
| 232 | case Initial: break; | 232 | case Initial: break; |
| 233 | case GeneratingInitialLocalCandidates: transporter.stopGeneratingLocalCandidates(); break; | 233 | case GeneratingInitialLocalCandidates: transporter.stopGeneratingLocalCandidates(); break; |
| 234 | case TryingCandidates: transporter.stopTryingRemoteCandidates(); break; | 234 | case TryingCandidates: transporter.stopTryingRemoteCandidates(); break; |
| @@ -244,20 +244,25 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 244 | break; | 244 | break; |
| 245 | case Finished: logger_.warning("Already finished\n"); break; | 245 | case Finished: logger_.warning("Already finished\n"); break; |
| 246 | } | 246 | } |
| 247 | if (!State.Initial.equals(state)) { | 247 | if (!State.Initial.equals(internalState)) { |
| 248 | removeTransporter(); | 248 | removeTransporter(); |
| 249 | } | 249 | } |
| 250 | } | 250 | } |
| 251 | 251 | ||
| 252 | protected void setState(State state) { | 252 | protected void setInternalState(State state) { |
| 253 | logger_.fine(state + "\n"); | 253 | logger_.fine(state + "\n"); |
| 254 | this.state = state; | 254 | this.internalState = state; |
| 255 | onStateChanged.emit(new FileTransfer.State(getExternalState(state))); | 255 | onStateChanged.emit(new FileTransfer.State(getExternalState(state))); |
| 256 | } | 256 | } |
| 257 | |||
| 258 | @Override | ||
| 259 | public com.isode.stroke.filetransfer.FileTransfer.State getState() { | ||
| 260 | return new FileTransfer.State(getExternalState(internalState)); | ||
| 261 | } | ||
| 257 | 262 | ||
| 258 | protected void setFinishedState(FileTransfer.State.Type type, final FileTransferError error) { | 263 | protected void setFinishedState(FileTransfer.State.Type type, final FileTransferError error) { |
| 259 | logger_.fine("\n"); | 264 | logger_.fine("\n"); |
| 260 | this.state = State.Finished; | 265 | this.internalState = State.Finished; |
| 261 | onStateChanged.emit(new FileTransfer.State(type)); | 266 | onStateChanged.emit(new FileTransfer.State(type)); |
| 262 | onFinished.emit(error); | 267 | onFinished.emit(error); |
| 263 | } | 268 | } |
| @@ -283,7 +288,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 283 | } | 288 | } |
| 284 | 289 | ||
| 285 | protected void fallback() { | 290 | protected void fallback() { |
| 286 | setState(State.WaitingForFallbackOrTerminate); | 291 | setInternalState(State.WaitingForFallbackOrTerminate); |
| 287 | } | 292 | } |
| 288 | 293 | ||
| 289 | protected void startTransferring(TransportSession transportSession) { | 294 | protected void startTransferring(TransportSession transportSession) { |
| @@ -296,20 +301,20 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 296 | handleTransferFinished(e); | 301 | handleTransferFinished(e); |
| 297 | } | 302 | } |
| 298 | }); | 303 | }); |
| 299 | setState(State.Transferring); | 304 | setInternalState(State.Transferring); |
| 300 | transportSession.start(); | 305 | transportSession.start(); |
| 301 | } | 306 | } |
| 302 | 307 | ||
| 303 | protected boolean isWaitingForPeerProxyActivate() { | 308 | protected boolean isWaitingForPeerProxyActivate() { |
| 304 | return State.WaitingForPeerProxyActivate.equals(state); | 309 | return State.WaitingForPeerProxyActivate.equals(internalState); |
| 305 | } | 310 | } |
| 306 | 311 | ||
| 307 | protected boolean isWaitingForLocalProxyActivate() { | 312 | protected boolean isWaitingForLocalProxyActivate() { |
| 308 | return State.WaitingForLocalProxyActivate.equals(state); | 313 | return State.WaitingForLocalProxyActivate.equals(internalState); |
| 309 | } | 314 | } |
| 310 | 315 | ||
| 311 | protected boolean isTryingCandidates() { | 316 | protected boolean isTryingCandidates() { |
| 312 | return State.TryingCandidates.equals(state); | 317 | return State.TryingCandidates.equals(internalState); |
| 313 | } | 318 | } |
| 314 | 319 | ||
| 315 | protected TransportSession createLocalCandidateSession() { | 320 | protected TransportSession createLocalCandidateSession() { |
| @@ -323,7 +328,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 323 | protected void terminate(JinglePayload.Reason.Type reason) { | 328 | protected void terminate(JinglePayload.Reason.Type reason) { |
| 324 | logger_.fine(reason + "\n"); | 329 | logger_.fine(reason + "\n"); |
| 325 | 330 | ||
| 326 | if (!State.Finished.equals(state)) { | 331 | if (!State.Finished.equals(internalState)) { |
| 327 | session.sendTerminate(reason); | 332 | session.sendTerminate(reason); |
| 328 | } | 333 | } |
| 329 | stopAll(); | 334 | stopAll(); |
| @@ -344,9 +349,9 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 344 | 349 | ||
| 345 | public void handleSessionTerminateReceived(JinglePayload.Reason reason) { | 350 | public void handleSessionTerminateReceived(JinglePayload.Reason reason) { |
| 346 | logger_.fine("\n"); | 351 | logger_.fine("\n"); |
| 347 | if (State.Finished.equals(state)) { logger_.warning("Incorrect state\n"); return; } | 352 | if (State.Finished.equals(internalState)) { logger_.warning("Incorrect state\n"); return; } |
| 348 | 353 | ||
| 349 | if (State.Finished.equals(state)) { | 354 | if (State.Finished.equals(internalState)) { |
| 350 | logger_.fine("Already terminated\n"); | 355 | logger_.fine("Already terminated\n"); |
| 351 | return; | 356 | return; |
| 352 | } | 357 | } |
| @@ -376,7 +381,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 376 | if (transferHash.getFileInfo().getHashes().containsKey("md5")) { | 381 | if (transferHash.getFileInfo().getHashes().containsKey("md5")) { |
| 377 | hashes.put("md5", transferHash.getFileInfo().getHash("md5")); | 382 | hashes.put("md5", transferHash.getFileInfo().getHash("md5")); |
| 378 | } | 383 | } |
| 379 | if (State.WaitingForHash.equals(state)) { | 384 | if (State.WaitingForHash.equals(internalState)) { |
| 380 | checkHashAndTerminate(); | 385 | checkHashAndTerminate(); |
| 381 | } | 386 | } |
| 382 | } | 387 | } |
| @@ -387,7 +392,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 387 | 392 | ||
| 388 | public void handleTransportReplaceReceived(final JingleContentID content, JingleTransportPayload transport) { | 393 | public void handleTransportReplaceReceived(final JingleContentID content, JingleTransportPayload transport) { |
| 389 | logger_.fine("\n"); | 394 | logger_.fine("\n"); |
| 390 | if (!State.WaitingForFallbackOrTerminate.equals(state)) { | 395 | if (!State.WaitingForFallbackOrTerminate.equals(internalState)) { |
| 391 | logger_.warning("Incorrect state\n"); | 396 | logger_.warning("Incorrect state\n"); |
| 392 | return; | 397 | return; |
| 393 | } | 398 | } |
| @@ -407,7 +412,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 407 | 412 | ||
| 408 | protected void handleLocalTransportCandidatesGenerated(final String s5bSessionID, final Vector<JingleS5BTransportPayload.Candidate> candidates, final String dstAddr) { | 413 | protected void handleLocalTransportCandidatesGenerated(final String s5bSessionID, final Vector<JingleS5BTransportPayload.Candidate> candidates, final String dstAddr) { |
| 409 | logger_.fine("\n"); | 414 | logger_.fine("\n"); |
| 410 | if (!State.GeneratingInitialLocalCandidates.equals(state)) { logger_.warning("Incorrect state\n"); return; } | 415 | if (!State.GeneratingInitialLocalCandidates.equals(internalState)) { logger_.warning("Incorrect state\n"); return; } |
| 411 | 416 | ||
| 412 | fillCandidateMap(localCandidates, candidates); | 417 | fillCandidateMap(localCandidates, candidates); |
| 413 | 418 | ||
| @@ -420,7 +425,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 420 | } | 425 | } |
| 421 | session.sendAccept(getContentID(), initialContent.getDescriptions().get(0), transport); | 426 | session.sendAccept(getContentID(), initialContent.getDescriptions().get(0), transport); |
| 422 | 427 | ||
| 423 | setState(State.TryingCandidates); | 428 | setInternalState(State.TryingCandidates); |
| 424 | transporter.startTryingRemoteCandidates(); | 429 | transporter.startTryingRemoteCandidates(); |
| 425 | } | 430 | } |
| 426 | 431 | ||
| @@ -453,7 +458,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 453 | 458 | ||
| 454 | if (!hashInfoAvailable) { | 459 | if (!hashInfoAvailable) { |
| 455 | logger_.fine("No hash information yet. Waiting a while on hash info.\n"); | 460 | logger_.fine("No hash information yet. Waiting a while on hash info.\n"); |
| 456 | setState(State.WaitingForHash); | 461 | setInternalState(State.WaitingForHash); |
| 457 | waitOnHashTimer.start(); | 462 | waitOnHashTimer.start(); |
| 458 | } | 463 | } |
| 459 | else { | 464 | else { |
| @@ -492,7 +497,7 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In | |||
| 492 | } | 497 | } |
| 493 | 498 | ||
| 494 | private void handleTransferFinished(FileTransferError error) { | 499 | private void handleTransferFinished(FileTransferError error) { |
| 495 | if (error != null && !State.WaitingForHash.equals(state)) { | 500 | if (error != null && !State.WaitingForHash.equals(internalState)) { |
| 496 | terminate(JinglePayload.Reason.Type.MediaError); | 501 | terminate(JinglePayload.Reason.Type.MediaError); |
| 497 | } | 502 | } |
| 498 | } | 503 | } |
diff --git a/src/com/isode/stroke/filetransfer/OutgoingJingleFileTransfer.java b/src/com/isode/stroke/filetransfer/OutgoingJingleFileTransfer.java index c5a1f11..63a11e8 100644 --- a/src/com/isode/stroke/filetransfer/OutgoingJingleFileTransfer.java +++ b/src/com/isode/stroke/filetransfer/OutgoingJingleFileTransfer.java | |||
| @@ -77,7 +77,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 77 | private FileTransferOptions options; | 77 | private FileTransferOptions options; |
| 78 | private JingleContentID contentID; | 78 | private JingleContentID contentID; |
| 79 | private IncrementalBytestreamHashCalculator hashCalculator; | 79 | private IncrementalBytestreamHashCalculator hashCalculator; |
| 80 | private State state; | 80 | private State internalState; |
| 81 | private boolean candidateAcknowledged; | 81 | private boolean candidateAcknowledged; |
| 82 | 82 | ||
| 83 | private Timer waitForRemoteTermination; | 83 | private Timer waitForRemoteTermination; |
| @@ -103,7 +103,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 103 | this.options = options; | 103 | this.options = options; |
| 104 | this.session = session; | 104 | this.session = session; |
| 105 | this.contentID = new JingleContentID(idGenerator.generateID(), JingleContentPayload.Creator.InitiatorCreator); | 105 | this.contentID = new JingleContentID(idGenerator.generateID(), JingleContentPayload.Creator.InitiatorCreator); |
| 106 | this.state = State.Initial; | 106 | this.internalState = State.Initial; |
| 107 | this.candidateAcknowledged = false; | 107 | this.candidateAcknowledged = false; |
| 108 | setFileInfo(fileInfo.getName(), fileInfo.getSize()); | 108 | setFileInfo(fileInfo.getName(), fileInfo.getSize()); |
| 109 | 109 | ||
| @@ -130,13 +130,13 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 130 | @Override | 130 | @Override |
| 131 | public void start() { | 131 | public void start() { |
| 132 | logger_.fine("\n"); | 132 | logger_.fine("\n"); |
| 133 | if (!State.Initial.equals(state)) { | 133 | if (!State.Initial.equals(internalState)) { |
| 134 | logger_.warning("Incorrect state\n"); | 134 | logger_.warning("Incorrect state\n"); |
| 135 | return; | 135 | return; |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | setTransporter(transporterFactory.createInitiatorTransporter(getInitiator(), getResponder(), options)); | 138 | setTransporter(transporterFactory.createInitiatorTransporter(getInitiator(), getResponder(), options)); |
| 139 | setState(State.GeneratingInitialLocalCandidates); | 139 | setInternalState(State.GeneratingInitialLocalCandidates); |
| 140 | transporter.startGeneratingLocalCandidates(); | 140 | transporter.startGeneratingLocalCandidates(); |
| 141 | } | 141 | } |
| 142 | 142 | ||
| @@ -164,12 +164,12 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 164 | 164 | ||
| 165 | public void handleSessionAcceptReceived(final JingleContentID contentID, JingleDescription description, JingleTransportPayload transportPayload) { | 165 | public void handleSessionAcceptReceived(final JingleContentID contentID, JingleDescription description, JingleTransportPayload transportPayload) { |
| 166 | logger_.fine("\n"); | 166 | logger_.fine("\n"); |
| 167 | if (!State.WaitingForAccept.equals(state)) { logger_.warning("Incorrect state\n"); return; } | 167 | if (!State.WaitingForAccept.equals(internalState)) { logger_.warning("Incorrect state\n"); return; } |
| 168 | 168 | ||
| 169 | if (transportPayload instanceof JingleS5BTransportPayload) { | 169 | if (transportPayload instanceof JingleS5BTransportPayload) { |
| 170 | JingleS5BTransportPayload s5bPayload = (JingleS5BTransportPayload)transportPayload; | 170 | JingleS5BTransportPayload s5bPayload = (JingleS5BTransportPayload)transportPayload; |
| 171 | transporter.addRemoteCandidates(s5bPayload.getCandidates(), s5bPayload.getDstAddr()); | 171 | transporter.addRemoteCandidates(s5bPayload.getCandidates(), s5bPayload.getDstAddr()); |
| 172 | setState(State.TryingCandidates); | 172 | setInternalState(State.TryingCandidates); |
| 173 | transporter.startTryingRemoteCandidates(); | 173 | transporter.startTryingRemoteCandidates(); |
| 174 | } | 174 | } |
| 175 | else { | 175 | else { |
| @@ -180,10 +180,10 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 180 | 180 | ||
| 181 | public void handleSessionTerminateReceived(JinglePayload.Reason reason) { | 181 | public void handleSessionTerminateReceived(JinglePayload.Reason reason) { |
| 182 | logger_.fine("\n"); | 182 | logger_.fine("\n"); |
| 183 | if (State.Finished.equals(state)) { logger_.warning("Incorrect state: " + state + "\n"); return; } | 183 | if (State.Finished.equals(internalState)) { logger_.warning("Incorrect state: " + internalState + "\n"); return; } |
| 184 | 184 | ||
| 185 | stopAll(); | 185 | stopAll(); |
| 186 | if (State.WaitForTermination.equals(state)) { | 186 | if (State.WaitForTermination.equals(internalState)) { |
| 187 | waitForRemoteTermination.stop(); | 187 | waitForRemoteTermination.stop(); |
| 188 | } | 188 | } |
| 189 | if (reason != null && JinglePayload.Reason.Type.Cancel.equals(reason.type)) { | 189 | if (reason != null && JinglePayload.Reason.Type.Cancel.equals(reason.type)) { |
| @@ -202,7 +202,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 202 | 202 | ||
| 203 | public void handleTransportAcceptReceived(final JingleContentID contentID, JingleTransportPayload transport) { | 203 | public void handleTransportAcceptReceived(final JingleContentID contentID, JingleTransportPayload transport) { |
| 204 | logger_.fine("\n"); | 204 | logger_.fine("\n"); |
| 205 | if (!State.FallbackRequested.equals(state)) { logger_.warning("Incorrect state\n"); return; } | 205 | if (!State.FallbackRequested.equals(internalState)) { logger_.warning("Incorrect state\n"); return; } |
| 206 | 206 | ||
| 207 | if (transport instanceof JingleIBBTransportPayload) { | 207 | if (transport instanceof JingleIBBTransportPayload) { |
| 208 | JingleIBBTransportPayload ibbPayload = (JingleIBBTransportPayload)transport; | 208 | JingleIBBTransportPayload ibbPayload = (JingleIBBTransportPayload)transport; |
| @@ -224,7 +224,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 224 | logger_.fine("\n"); | 224 | logger_.fine("\n"); |
| 225 | 225 | ||
| 226 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(ourCandidateChoice.type)) { | 226 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(ourCandidateChoice.type)) { |
| 227 | setState(State.WaitingForPeerProxyActivate); | 227 | setInternalState(State.WaitingForPeerProxyActivate); |
| 228 | } | 228 | } |
| 229 | else { | 229 | else { |
| 230 | transportSession = createRemoteCandidateSession(); | 230 | transportSession = createRemoteCandidateSession(); |
| @@ -236,7 +236,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 236 | logger_.fine("\n"); | 236 | logger_.fine("\n"); |
| 237 | 237 | ||
| 238 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(theirCandidateChoice.type)) { | 238 | if (JingleS5BTransportPayload.Candidate.Type.ProxyType.equals(theirCandidateChoice.type)) { |
| 239 | setState(State.WaitingForLocalProxyActivate); | 239 | setInternalState(State.WaitingForLocalProxyActivate); |
| 240 | transporter.startActivatingProxy(theirCandidateChoice.jid); | 240 | transporter.startActivatingProxy(theirCandidateChoice.jid); |
| 241 | } | 241 | } |
| 242 | else { | 242 | else { |
| @@ -250,13 +250,13 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 250 | startTransferring(transportSession); | 250 | startTransferring(transportSession); |
| 251 | } | 251 | } |
| 252 | else { | 252 | else { |
| 253 | setState(State.WaitingForCandidateAcknowledge); | 253 | setInternalState(State.WaitingForCandidateAcknowledge); |
| 254 | } | 254 | } |
| 255 | } | 255 | } |
| 256 | 256 | ||
| 257 | protected void handleLocalTransportCandidatesGenerated(final String s5bSessionID, final Vector<JingleS5BTransportPayload.Candidate> candidates, final String dstAddr) { | 257 | protected void handleLocalTransportCandidatesGenerated(final String s5bSessionID, final Vector<JingleS5BTransportPayload.Candidate> candidates, final String dstAddr) { |
| 258 | logger_.fine("\n"); | 258 | logger_.fine("\n"); |
| 259 | if (!State.GeneratingInitialLocalCandidates.equals(state)) { logger_.warning("Incorrect state\n"); return; } | 259 | if (!State.GeneratingInitialLocalCandidates.equals(internalState)) { logger_.warning("Incorrect state\n"); return; } |
| 260 | 260 | ||
| 261 | fillCandidateMap(localCandidates, candidates); | 261 | fillCandidateMap(localCandidates, candidates); |
| 262 | 262 | ||
| @@ -273,7 +273,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 273 | transport.addCandidate(candidate); | 273 | transport.addCandidate(candidate); |
| 274 | logger_.fine("\t" + "S5B candidate: " + candidate.hostPort.toString() + "\n"); | 274 | logger_.fine("\t" + "S5B candidate: " + candidate.hostPort.toString() + "\n"); |
| 275 | } | 275 | } |
| 276 | setState(State.WaitingForAccept); | 276 | setInternalState(State.WaitingForAccept); |
| 277 | session.sendInitiate(contentID, description, transport); | 277 | session.sendInitiate(contentID, description, transport); |
| 278 | } | 278 | } |
| 279 | 279 | ||
| @@ -281,7 +281,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 281 | if (id.equals(candidateSelectRequestID)) { | 281 | if (id.equals(candidateSelectRequestID)) { |
| 282 | candidateAcknowledged = true; | 282 | candidateAcknowledged = true; |
| 283 | } | 283 | } |
| 284 | if (State.WaitingForCandidateAcknowledge.equals(state)) { | 284 | if (State.WaitingForCandidateAcknowledge.equals(internalState)) { |
| 285 | startTransferring(transportSession); | 285 | startTransferring(transportSession); |
| 286 | } | 286 | } |
| 287 | } | 287 | } |
| @@ -293,7 +293,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 293 | protected void terminate(JinglePayload.Reason.Type reason) { | 293 | protected void terminate(JinglePayload.Reason.Type reason) { |
| 294 | logger_.fine(reason + "\n"); | 294 | logger_.fine(reason + "\n"); |
| 295 | 295 | ||
| 296 | if (!State.Initial.equals(state) && !State.GeneratingInitialLocalCandidates.equals(state) && !State.Finished.equals(state)) { | 296 | if (!State.Initial.equals(internalState) && !State.GeneratingInitialLocalCandidates.equals(internalState) && !State.Finished.equals(internalState)) { |
| 297 | session.sendTerminate(reason); | 297 | session.sendTerminate(reason); |
| 298 | } | 298 | } |
| 299 | stopAll(); | 299 | stopAll(); |
| @@ -306,7 +306,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 306 | JingleIBBTransportPayload ibbTransport = new JingleIBBTransportPayload(); | 306 | JingleIBBTransportPayload ibbTransport = new JingleIBBTransportPayload(); |
| 307 | ibbTransport.setBlockSize(DEFAULT_BLOCK_SIZE); | 307 | ibbTransport.setBlockSize(DEFAULT_BLOCK_SIZE); |
| 308 | ibbTransport.setSessionID(idGenerator.generateID()); | 308 | ibbTransport.setSessionID(idGenerator.generateID()); |
| 309 | setState(State.FallbackRequested); | 309 | setInternalState(State.FallbackRequested); |
| 310 | session.sendTransportReplace(contentID, ibbTransport); | 310 | session.sendTransportReplace(contentID, ibbTransport); |
| 311 | } | 311 | } |
| 312 | else { | 312 | else { |
| @@ -317,7 +317,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 317 | 317 | ||
| 318 | private void handleTransferFinished(FileTransferError error) { | 318 | private void handleTransferFinished(FileTransferError error) { |
| 319 | logger_.fine("\n"); | 319 | logger_.fine("\n"); |
| 320 | if (!State.Transferring.equals(state)) { logger_.warning("Incorrect state: " + state + "\n"); return; } | 320 | if (!State.Transferring.equals(internalState)) { logger_.warning("Incorrect state: " + internalState + "\n"); return; } |
| 321 | 321 | ||
| 322 | if (error != null) { | 322 | if (error != null) { |
| 323 | terminate(JinglePayload.Reason.Type.ConnectivityError); | 323 | terminate(JinglePayload.Reason.Type.ConnectivityError); |
| @@ -326,7 +326,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 326 | sendSessionInfoHash(); | 326 | sendSessionInfoHash(); |
| 327 | 327 | ||
| 328 | // wait for other party to terminate session after they have verified the hash | 328 | // wait for other party to terminate session after they have verified the hash |
| 329 | setState(State.WaitForTermination); | 329 | setInternalState(State.WaitForTermination); |
| 330 | waitForRemoteTermination.start(); | 330 | waitForRemoteTermination.start(); |
| 331 | } | 331 | } |
| 332 | } | 332 | } |
| @@ -351,7 +351,7 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 351 | handleTransferFinished(e); | 351 | handleTransferFinished(e); |
| 352 | } | 352 | } |
| 353 | }); | 353 | }); |
| 354 | setState(State.Transferring); | 354 | setInternalState(State.Transferring); |
| 355 | transportSession.start(); | 355 | transportSession.start(); |
| 356 | } | 356 | } |
| 357 | 357 | ||
| @@ -360,15 +360,15 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 360 | } | 360 | } |
| 361 | 361 | ||
| 362 | protected boolean isWaitingForPeerProxyActivate() { | 362 | protected boolean isWaitingForPeerProxyActivate() { |
| 363 | return State.WaitingForPeerProxyActivate.equals(state); | 363 | return State.WaitingForPeerProxyActivate.equals(internalState); |
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | protected boolean isWaitingForLocalProxyActivate() { | 366 | protected boolean isWaitingForLocalProxyActivate() { |
| 367 | return State.WaitingForLocalProxyActivate.equals(state); | 367 | return State.WaitingForLocalProxyActivate.equals(internalState); |
| 368 | } | 368 | } |
| 369 | 369 | ||
| 370 | protected boolean isTryingCandidates() { | 370 | protected boolean isTryingCandidates() { |
| 371 | return State.TryingCandidates.equals(state); | 371 | return State.TryingCandidates.equals(internalState); |
| 372 | } | 372 | } |
| 373 | 373 | ||
| 374 | protected TransportSession createLocalCandidateSession() { | 374 | protected TransportSession createLocalCandidateSession() { |
| @@ -380,15 +380,15 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | private void handleWaitForRemoteTerminationTimeout() { | 382 | private void handleWaitForRemoteTerminationTimeout() { |
| 383 | assert(state.equals(State.WaitForTermination)); | 383 | assert(internalState.equals(State.WaitForTermination)); |
| 384 | logger_.warning("Other party did not terminate session. Terminate it now.\n"); | 384 | logger_.warning("Other party did not terminate session. Terminate it now.\n"); |
| 385 | waitForRemoteTermination.stop(); | 385 | waitForRemoteTermination.stop(); |
| 386 | terminate(JinglePayload.Reason.Type.MediaError); | 386 | terminate(JinglePayload.Reason.Type.MediaError); |
| 387 | } | 387 | } |
| 388 | 388 | ||
| 389 | private void stopAll() { | 389 | private void stopAll() { |
| 390 | logger_.fine(state + "\n"); | 390 | logger_.fine(internalState + "\n"); |
| 391 | switch (state) { | 391 | switch (internalState) { |
| 392 | case Initial: logger_.warning("Not yet started\n"); break; | 392 | case Initial: logger_.warning("Not yet started\n"); break; |
| 393 | case GeneratingInitialLocalCandidates: transporter.stopGeneratingLocalCandidates(); break; | 393 | case GeneratingInitialLocalCandidates: transporter.stopGeneratingLocalCandidates(); break; |
| 394 | case WaitingForAccept: break; | 394 | case WaitingForAccept: break; |
| @@ -408,20 +408,25 @@ public class OutgoingJingleFileTransfer extends JingleFileTransfer implements Ou | |||
| 408 | break; | 408 | break; |
| 409 | case Finished: logger_.warning("Already finished\n"); break; | 409 | case Finished: logger_.warning("Already finished\n"); break; |
| 410 | } | 410 | } |
| 411 | if (!State.Initial.equals(state)) { | 411 | if (!State.Initial.equals(internalState)) { |
| 412 | removeTransporter(); | 412 | removeTransporter(); |
| 413 | } | 413 | } |
| 414 | } | 414 | } |
| 415 | 415 | ||
| 416 | private void setState(State state) { | 416 | private void setInternalState(State state) { |
| 417 | logger_.fine(state + "\n"); | 417 | logger_.fine(state + "\n"); |
| 418 | this.state = state; | 418 | this.internalState = state; |
| 419 | onStateChanged.emit(new FileTransfer.State(getExternalState(state))); | 419 | onStateChanged.emit(new FileTransfer.State(getExternalState(state))); |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | @Override | ||
| 423 | public com.isode.stroke.filetransfer.FileTransfer.State getState() { | ||
| 424 | return new FileTransfer.State(getExternalState(internalState)); | ||
| 425 | } | ||
| 426 | |||
| 422 | private void setFinishedState(FileTransfer.State.Type type, final FileTransferError error) { | 427 | private void setFinishedState(FileTransfer.State.Type type, final FileTransferError error) { |
| 423 | logger_.fine("\n"); | 428 | logger_.fine("\n"); |
| 424 | this.state = State.Finished; | 429 | this.internalState = State.Finished; |
| 425 | onStateChanged.emit(new FileTransfer.State(type)); | 430 | onStateChanged.emit(new FileTransfer.State(type)); |
| 426 | onFinished.emit(error); | 431 | onFinished.emit(error); |
| 427 | } | 432 | } |
Swift