@Override public byte[] toByteArray() { // there is no message batch so we pass -1 return toByteArray(-1); } }
@Override public void close() { stop(); } }
@Override public Message readNext(int timeout, TimeUnit unit) throws PulsarClientException { Message msg = consumer.receive(timeout, unit); if (msg != null) { consumer.acknowledgeCumulativeAsync(msg); } return msg; }
private MessageIdImpl getMessageIdImpl(Message msg) { MessageIdImpl messageId = (MessageIdImpl) msg.getMessageId(); if (messageId instanceof BatchMessageIdImpl) { // messageIds contain MessageIdImpl, not BatchMessageIdImpl messageId = new MessageIdImpl(messageId.getLedgerId(), messageId.getEntryId(), getPartitionIndex()); } return messageId; }
void setMessageId(long ledgerId, long entryId, int partitionIndex) { if (msg != null) { msg.setMessageId(new MessageIdImpl(ledgerId, entryId, partitionIndex)); } else { for (int batchIndex = 0; batchIndex < msgs.size(); batchIndex++) { msgs.get(batchIndex) .setMessageId(new BatchMessageIdImpl(ledgerId, entryId, partitionIndex, batchIndex)); } } }
@Override public synchronized ConsumerStats getStats() { if (stats == null) { return null; } stats.reset(); for (int i = 0; i < numPartitions; i++) { stats.updateCumulativeStats(consumers.get(i).getStats()); } return stats; }
@Override public synchronized ProducerStats getStats() { if (stats == null) { return null; } stats.reset(); for (int i = 0; i < numPartitions; i++) { stats.updateCumulativeStats(producers.get(i).getStats()); } return stats; }
private void starReceivingMessages() throws PulsarClientException { for (ConsumerImpl consumer : consumers) { consumer.sendFlowPermitsToBroker(consumer.cnx(), conf.getReceiverQueueSize()); receiveMessageFromConsumer(consumer); } }
@Override public boolean isConnected() { for (ProducerImpl producer : producers) { // returns false if any of the partition is not connected if (!producer.isConnected()) { return false; } } return true; }
@Override protected MessageImpl newObject(Handle handle) { return new MessageImpl(handle); } };
@Override public boolean isConnected() { return getClientCnx() != null && (getState() == State.Ready); }
/** * helper method that returns current state of data structure used to track acks for batch messages * * @return true if all batch messages have been acknowledged */ public boolean isBatchingAckTrackerEmpty() { boolean state = true; for (Consumer consumer : consumers) { state &= ((ConsumerImpl) consumer).isBatchingAckTrackerEmpty(); } return state; }
@Override public MessageBuilder setContent(byte[] data) { setContent(data, 0, data.length); return this; }
/** * De-serialize a message id from a byte array * * @param data * byte array containing the serialized message id * @return the de-serialized messageId object */ public static MessageId fromByteArray(byte[] data) throws IOException { return MessageIdImpl.fromByteArray(data); }
@Override public byte[] toByteArray() { return toByteArray(batchIndex); } }
/** * Create a new message builder instance. * <p> * A message builder is suitable for creating one single message * * @return a new message builder */ public static MessageBuilder create() { return new MessageBuilderImpl(); }
@Override protected WriteInEventLoopCallback newObject(Handle handle) { return new WriteInEventLoopCallback(handle); } };
@Override protected OpSendMsg newObject(Handle handle) { return new OpSendMsg(handle); } };
@Override public CompletableFuture<Void> closeAsync() { return consumer.closeAsync(); }
private boolean isWritable() { ProducerImpl producer = this.producer; return producer != null && producer.isWritable(); }