Caller should check before calling that guard is not satisfied.
(Guard guard, long nanos, boolean signalBeforeWaiting)
| 1162 | */ |
| 1163 | |
| 1164 | @GuardedBy("lock") |
| 1165 | private boolean awaitNanos(Guard guard, long nanos, boolean signalBeforeWaiting) throws InterruptedException { |
| 1166 | boolean firstTime = true; |
| 1167 | try { |
| 1168 | do { |
| 1169 | if (nanos <= 0L) { |
| 1170 | return false; |
| 1171 | } |
| 1172 | if (firstTime) { |
| 1173 | if (signalBeforeWaiting) { |
| 1174 | signalNextWaiter(); |
| 1175 | } |
| 1176 | beginWaitingFor(guard); |
| 1177 | firstTime = false; |
| 1178 | } |
| 1179 | nanos = guard.condition.awaitNanos(nanos); |
| 1180 | } while (!guard.isSatisfied()); |
| 1181 | return true; |
| 1182 | } finally { |
| 1183 | if (!firstTime) { |
| 1184 | endWaitingFor(guard); |
| 1185 | } |
| 1186 | } |
| 1187 | } |
| 1188 | } |
no test coverage detected