<V> Map<AsyncLogger, V> waitForWriteQuorum(QuorumCall<AsyncLogger, V> q,
      int timeoutMs, String operationName) throws IOException {
    int majority = getMajoritySize();
    int numLoggers = loggers.size();
    checkMajoritySize(majority, numLoggers);
    return waitForQuorumInternal(q, loggers.size(), majority, numLoggers
        - majority + 1, majority, timeoutMs, operationName);
  }
< V > Map < AsyncLogger , V > waitForWriteQuorum ( QuorumCall < AsyncLogger , V > q , int timeoutMs , String operationName ) throws IOException { int majority = getMajoritySize ( ) ; int numLoggers = loggers . size ( ) ; checkMajoritySize ( majority , numLoggers ) ; return waitForQuorumInternal ( q , loggers . size ( ) , majority , numLoggers - majority + 1 , majority , timeoutMs , operationName ) ; }
Wait for a quorum of loggers to respond to the given call. If a quorum
can't be achieved, throws a QuorumException.
@param q the quorum call
@param timeoutMs the number of millis to wait
@param operationName textual description of the operation, for logging
@return a map of successful results
@throws QuorumException if a quorum doesn't respond with success
@throws IOException if the thread is interrupted or times out