private void writeValue(ExcerptAppender excerpt, V value) { if (valueCodec == null) { excerpt.writeObject(value); } else { Buffer buff = valueCodec.apply(value); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }
@Override public Long offer(@Nonnull T t) { synchronized (monitor) { Buffer buff = codec.apply(t); int len = buff.remaining(); exAppender.startExcerpt(4 + len); exAppender.writeInt(len); exAppender.write(buff.byteBuffer()); exAppender.finish(); size.incrementAndGet(); lastId.set(exAppender.lastWrittenIndex()); } if (LOG.isTraceEnabled()) { LOG.trace("Offered {} to Chronicle at index {}, size {}", t, lastId(), size()); } return lastId(); }
Log write(AppenderHolder holder) { long time = getTimestamp(); long index = holder.getAppenderIndex(time); ExcerptAppender appender = holder.getAppender(time); appender.startExcerpt(getLength()); appender.writeLong(time); appender.write(RESERVED_META); appender.writeInt(content.length); appender.write(content); appender.finish(); this.index = index; return this; }
private void writeKey(ExcerptAppender excerpt, K key) { if (keyCodec == null) { excerpt.writeObject(key); } else { Buffer buff = keyCodec.apply(key); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }
/** * @see com.ottogroup.bi.spqr.pipeline.queue.StreamingMessageQueueProducer#insert(com.ottogroup.bi.spqr.pipeline.message.StreamingDataMessage) */ public boolean insert(StreamingDataMessage message) { // TODO add concurrency handler to support multiple writers properly if(message != null) { synchronized (queueProducer) { queueProducer.startExcerpt(); queueProducer.writeLong(message.getTimestamp()); queueProducer.writeInt(message.getBody().length); queueProducer.write(message.getBody()); queueProducer.finish(); if(this.messageInsertionCounter != null) this.messageInsertionCounter.inc(); return true; } } return false; }
@Override public Long offerAll(@Nonnull Collection<T> t) { if(t.isEmpty()){ return lastId(); } Function<T, Buffer> encoder = codec; int elasticity = 16; Buffer buff; synchronized (monitor) { long count = 0l; for(T v : t) { buff = encoder.apply(v); int len = buff.remaining(); if(count++ == 0){ exAppender.startExcerpt(4 + elasticity*t.size()*len); } exAppender.writeInt(len); exAppender.write(buff.byteBuffer()); size.incrementAndGet(); } lastId.set(exAppender.lastWrittenIndex()); exAppender.finish(); } if (LOG.isTraceEnabled()) { LOG.trace("Offered {} to Chronicle at index {}, size {}", t, lastId(), size()); } return lastId(); }
@Override protected boolean onSubmit(final SelectionKey key, long size, boolean ack) throws IOException { readUpTo((int) size); appender.startExcerpt((int) size); appender.write(readBuffer); appender.finish(); pauser.unpause(); if (ack) { sendSizeAndIndex(ChronicleTcp.ACK_LEN, appender.lastWrittenIndex()); } return true; }
private void writeValue(ExcerptAppender excerpt, V value) { if (valueCodec == null) { excerpt.writeObject(value); } else { Buffer buff = valueCodec.apply(value); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }
Log write(Encodable e, AppenderHolder holder) { long time = getTimestamp(); long index = holder.getAppenderIndex(time); ExcerptAppender appender = holder.getAppender(time); int contentLength = e.getTotalSize(); int logLength = 8 + 8 + 4 + contentLength; appender.startExcerpt(logLength); appender.writeLong(time); appender.write(RESERVED_META); appender.writeInt(contentLength); e.writeTo(new DirectBuffer(appender.address() + 8 + 8 + 4, contentLength), 0); appender.position(logLength); appender.finish(); this.index = index; return this; }
private void writeKey(ExcerptAppender excerpt, K key) { if (keyCodec == null) { excerpt.writeObject(key); } else { Buffer buff = keyCodec.apply(key); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }