in src/main/java/com/microsoft/azure/proton/transport/proxy/impl/ProxyImpl.java [373:420]
public int pending() {
if (!getIsHandshakeInProgress()) {
return underlyingOutput.pending();
}
switch (proxyState) {
case PN_PROXY_NOT_STARTED:
if (outputBuffer.position() == 0) {
proxyState = ProxyState.PN_PROXY_CONNECTING;
writeProxyRequest();
head.limit(outputBuffer.position());
if (headClosed) {
proxyState = ProxyState.PN_PROXY_FAILED;
return Transport.END_OF_STREAM;
} else {
return outputBuffer.position();
}
} else {
return outputBuffer.position();
}
case PN_PROXY_CHALLENGE:
if (outputBuffer.position() == 0) {
proxyState = ProxyState.PN_PROXY_CHALLENGE_RESPONDED;
writeProxyRequest();
head.limit(outputBuffer.position());
if (headClosed) {
proxyState = ProxyState.PN_PROXY_FAILED;
return Transport.END_OF_STREAM;
} else {
return outputBuffer.position();
}
} else {
return outputBuffer.position();
}
case PN_PROXY_CHALLENGE_RESPONDED:
case PN_PROXY_CONNECTING:
if (headClosed && (outputBuffer.position() == 0)) {
proxyState = ProxyState.PN_PROXY_FAILED;
return Transport.END_OF_STREAM;
} else {
return outputBuffer.position();
}
default:
return Transport.END_OF_STREAM;
}
}