package org.torproject.jtor.circuits.impl;
import org.torproject.jtor.circuits.Stream;
import org.torproject.jtor.circuits.OpenStreamResponse;
public class OpenStreamResponseImpl implements OpenStreamResponse {
static OpenStreamResponse createStreamOpened(Stream stream) {
return new OpenStreamResponseImpl(stream, OpenStreamStatus.STATUS_STREAM_OPENED, 0);
}
static OpenStreamResponse createStreamTimeout() {
return new OpenStreamResponseImpl(null, OpenStreamStatus.STATUS_STREAM_TIMEOUT, 0);
}
static OpenStreamResponse createStreamError(int reason) {
return new OpenStreamResponseImpl(null, OpenStreamStatus.STATUS_STREAM_ERROR, reason);
}
private final int errorReason;
private final Stream stream;
private final OpenStreamStatus status;
private OpenStreamResponseImpl(Stream stream, OpenStreamStatus status, int reason) {
this.stream = stream;
this.status = status;
this.errorReason = reason;
}
public Stream getStream() {
return stream;
}
public OpenStreamStatus getStatus() {
return status;
}
public int getErrorCode() {
return errorReason;
}
public String getErrorCodeMessage() {
return RelayCellImpl.reasonToDescription(errorReason);
}
}