private long SendAdminQuery(AdminQueryType queryType, long deadlineNs) { long correlationId = _aeron.NextCorrelationId(); int length = MessageHeaderEncoder.ENCODED_LENGTH + AdminQueryEncoder.BLOCK_LENGTH; int attempts = SEND_ATTEMPTS; _idleStrategy.Reset(); while (true) { long result = _publication.TryClaim(length, _bufferClaim); if (result > 0) { _adminQueryEncoder .WrapAndApplyHeader(_bufferClaim.Buffer, _bufferClaim.Offset, _messageHeaderEncoder) .CorrelationId(correlationId) .ClusterSessionId(_clusterSessionId) .QueryType(queryType); _bufferClaim.Commit(); break; } CheckResult(result); if (--attempts <= 0 || _nanoClock.NanoTime() > deadlineNs) { throw new TimeoutException("Failed to send query"); } _idleStrategy.Idle(); } return(correlationId); }
public AdminQueryEncoder QueryType(AdminQueryType value) { _buffer.PutInt(_offset + 16, (int)value, ByteOrder.LittleEndian); return(this); }