Ejemplo n.º 1
0
  public OutputStream createOutgoingStream(String streamID, String initiator, String target)
      throws XMPPException {
    OutputStream stream;
    try {
      stream = primaryNegotiator.createOutgoingStream(streamID, initiator, target);
    } catch (XMPPException ex) {
      stream = secondaryNegotiator.createOutgoingStream(streamID, initiator, target);
    }

    return stream;
  }
  private OutputStream negotiateStream(String fileName, long fileSize, String description)
      throws XMPPException {
    // Negotiate the file transfer profile

    if (!updateStatus(Status.initial, Status.negotiating_transfer)) {
      throw new XMPPException("Illegal state change");
    }
    StreamNegotiator streamNegotiator =
        negotiator.negotiateOutgoingTransfer(
            getPeer(), streamID, fileName, fileSize, description, RESPONSE_TIMEOUT);

    if (streamNegotiator == null) {
      setStatus(Status.error);
      setError(Error.no_response);
      return null;
    }

    // Negotiate the stream
    if (!updateStatus(Status.negotiating_transfer, Status.negotiating_stream)) {
      throw new XMPPException("Illegal state change");
    }
    if (streamID == null) Log.e("myOutgoingFileTransfer", "null STREAMID");
    if (initiator == null) Log.e("myOutgoingFileTransfer", "null INITIATOR");
    if (getPeer() == null) Log.e("myOutgoingFileTransfer", "null GETPEER");
    outputStream = streamNegotiator.createOutgoingStream(streamID, initiator, getPeer());

    if (!updateStatus(Status.negotiating_stream, Status.negotiated)) {
      throw new XMPPException("Illegal state change");
    }
    return outputStream;
  }