74c99d39c800193f07a881ce98ee4b7065cee6dc
hiram
  Fri Sep 13 10:00:57 2019 -0700
get the warning message out of the warning only message to be used elsewhere and add measureTiming printout to hgGateway refs #23217

diff --git src/hg/inc/botDelay.h src/hg/inc/botDelay.h
index beafb85..c084419 100644
--- src/hg/inc/botDelay.h
+++ src/hg/inc/botDelay.h
@@ -1,47 +1,53 @@
 /* botDelay - contact bottleneck server and sleep 
  * for a little bit if IP address looks like it is
  * being just too demanding. */
 
 /* Copyright (C) 2004 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 int botDelayTime(char *host, int port, char *ip);
 /* Figure out suggested delay time for ip address in
  * milliseconds. */
 
 void botDelayCgi(char *host, int port, boolean noWarn, double fraction);
 /* Connect with bottleneck server and sleep the
  * amount it suggests for IP address calling CGI script. */
 
+char *botDelayWarningMsg(char *ip, int millis);
+/* return the string for the default botDelay message
+ * not all users of botDelay want the message to go to stderr
+ * return it for their own use case
+ */
+
 void botDelayMessage(char *ip, int millis);
 /* Print out message saying why you are stalled. */
 
 void hgBotDelay();
 /* High level bot delay call - for use with regular webpage output */ 
 
 void hgBotDelayFrac(double fraction);
 /* Like hgBotDelay, but imposes a fraction of the standard access penalty */ 
 
 void hgBotDelayNoWarn();
 /* High level bot delay call without warning - for use with non-webpage output */
 
 void hgBotDelayNoWarnFrac(double fraction);
 /* Like hgBotDelayNoWarn, but imposes a fraction of the standard access penalty */
 
 int hgBotDelayTime();
 /* Get suggested delay time from cgi using the standard penalty. */
 
 int hgBotDelayTimeFrac(double fraction);
 /* Get suggested delay time from cgi using the specified fraction of the standard penalty. */
 
 extern int botDelayMillis;
 
 boolean earlyBotCheck(long enteredMainTime, char *cgiName, double delayFrac, int warnMs, int exitMs, char *exitType);
 /* similar to botDelayCgi but for use before the CGI has started any
  * output or setup the cart of done any MySQL operations.  The boolean
  * return is used later in the CGI after it has done all its setups and
  * started output so it can issue the warning.  Pass in delayFrac 0.0
  * to use the default 1.0, pass in 0 for warnMs and exitMs to use defaults,
  * and exitType is either 'html' or 'json' to do that type of exit output in
  * the case of hogExit();
  */