private void informRequestListener(HttpRequest req, Throwable cause) {
boolean success = (cause == null);
boolean debug = _log.isDebugEnabled();
// listener is nullified (under sync) to guarantee it is called only once
SendRequestResultListener tempListener = null;
synchronized(this) {
if(cause != null)
_lastError = cause;
if(_requestListener != null) {
tempListener = _requestListener;
_requestListener = null;
}
}
if(debug)
_log.debug("informRequestListener: success=" + success + ";req=" + req, cause);
if(tempListener != null) {
_log.debug("Notify about requestSent completed. success=" + success);
if(success)
tempListener.onSendRequestSuccess(req);
else
tempListener.onSendRequestFailure(req, cause);
} else {
_log.warn("informRequestListener called with listener==null; req=" + req, cause);
}
}