@Override public void small(MetaData ignored, @NotNull SmallCommand command) { excerpt.startExcerpt(200); // guess the maximum size (or calculate it) excerpt.writeEnum(MessageType.small); MetaData.writeForGateway(excerpt); command.writeMarshallable(excerpt); excerpt.finish(); } }
public boolean readEntry() { if (!excerpt.nextIndex()) return false; long writeTimeMS = excerpt.readLong(); long writeTimeNS = excerpt.readLong(); int pos = excerpt.position(); long readTimeNS = excerpt.readLong(); if (targetReader && readTimeNS == 0) excerpt.writeLong(pos, readTimeNS = System.nanoTime()); int length = excerpt.readInt24(); char type = (char) excerpt.readUnsignedByte(); onEntry(writeTimeMS, writeTimeNS, readTimeNS, length, type, excerpt); return true; }
public void readFromEngine(@NotNull Excerpt in, int sourceId) { this.sourceId = in.readInt(); excerptId = in.readLong(); targetReader = sourceId == this.sourceId; writeTimestampMillis = in.readLong(); inWriteTimestamp7 = in.readLong(); inReadTimestamp7Delta = in.readUnsignedInt(); outWriteTimestamp7Delta = in.readUnsignedInt(); outReadTimestamp7Delta = in.readUnsignedInt(); if (outReadTimestamp7Delta == 0 && targetReader) in.writeUnsignedInt(in.position() - 4, outReadTimestamp7Delta = fastTime() - inWriteTimestamp7); } }
void addEntry() { excerpt.startExcerpt(sizeORecordBytes); excerpt.position(sizeORecordBytes); excerpt.finish(); }
@Override public void readMarshallable(@NotNull Excerpt in) throws IllegalStateException { // changes often. in.readUTF(clientOrderId); // cachable. instrument = in.readEnum(String.class); price = in.readDouble(); quantity = in.readInt(); side = in.readEnum(Side.class); }
int i2 = 0; for (int i = 0; i < RUNS; i++) { excerpt.startExcerpt(32); excerpt.writeChar('T'); excerpt.writeInt(i); excerpt.writeChars("Hello World!"); excerpt.finish(); while (excerpt2.index(i2)) { char type = excerpt2.readChar(); if ('R' != type) assertEquals('R', type); int n = excerpt2.readInt(); if (i2 != n) assertEquals(i2, n); excerpt2.finish(); i2++; do { busyWait(); } while (!excerpt2.index(i2)); char type = excerpt2.readChar(); if ('R' != type) assertEquals('R', type); int n = excerpt2.readInt(); if (i2 != n) assertEquals(i2, n); excerpt2.finish();
@Override public void run() { try { final IndexedChronicle tsc = new IndexedChronicle(basePath); tsc.useUnsafe(USE_UNSAFE); final IndexedChronicle tsc2 = new IndexedChronicle(basePath2); tsc2.useUnsafe(USE_UNSAFE); tsc2.clear(); Excerpt excerpt = tsc.createExcerpt(); Excerpt excerpt2 = tsc2.createExcerpt(); for (int i = 0; i < RUNS; i++) { do { /* try again */ } while (!excerpt.index(i)); long time = excerpt.readLong(); excerpt.finish(); excerpt2.startExcerpt(8); excerpt2.writeLong(time); excerpt2.finish(); } } catch (IOException e) { e.printStackTrace(); } } });
do { busyWait(); } while (!excerpt.index(i)); char type = excerpt.readChar(); if ('T' != type) assertEquals('T', type); int n = excerpt.readInt(); if (i != n) assertEquals(i, n); excerpt.readChars(sb); excerpt.finish(); excerpt2.startExcerpt(8); excerpt2.writeChar('R'); excerpt2.writeInt(n); excerpt2.writeShort(-1); excerpt2.finish();
do { BusyWaiter.pause(); } while (!excerpt.index(i)); char type = excerpt.readChar(); if ('T' != type) assertEquals('T', type); int n = excerpt.readInt(); if (i != n) assertEquals(i, n); excerpt.readChars(sb); excerpt.readLong(); excerpt.readDouble(); excerpt.finish(); excerpt2.startExcerpt(6); excerpt2.writeChar('R'); excerpt2.writeInt(n); excerpt2.finish();
int repeats = 10000; for (int i = 0; i < repeats; i++) { excerpt.startExcerpt(8 + 4 + 4 * consolidates.length); excerpt.writeLong(System.nanoTime()); excerpt.writeInt(consolidates.length); for (final int consolidate : consolidates) { excerpt.writeInt(consolidate); excerpt.finish(); int count = 0; final Excerpt excerpt2 = chronicle.createExcerpt(); while (excerpt2.nextIndex()) { final long timestamp = excerpt2.readLong(); long time = System.nanoTime() - timestamp; times[count] = time; final int nbConsolidates = excerpt2.readInt(); nbcs[count] = nbConsolidates; for (int i = 0; i < nbConsolidates; i++) { excerpt2.readInt(); excerpt2.finish(); count++;
@Test public void testWrite_é() throws IOException { final String basePath = BASE_DIR + "text"; deleteOnExit(basePath); IndexedChronicle tsc = new IndexedChronicle(basePath); tsc.useUnsafe(USE_UNSAFE); tsc.clear(); Excerpt excerpt = tsc.createExcerpt(); excerpt.startExcerpt(4); String é = "é"; excerpt.writeUTF(é); excerpt.finish(); assertTrue(excerpt.index(0)); String e2 = excerpt.readUTF(); excerpt.finish(); assertEquals(e2, é); } }
int runs = 1000000; for (int i = 0; i < runs; i++) { excerpt.startExcerpt(bytes.length); excerpt.write(bytes); excerpt.finish(); excerpt.index(-1); while (excerpt.nextIndex()) { long l = excerpt.parseLong(); assert l == 8; String s = excerpt.parseEnum(String.class, StopCharTesters.CONTROL_STOP); assert s.equals("FIX.4.2"); l = excerpt.parseLong(); assert l == 9; l = excerpt.parseLong(); l = excerpt.parseLong(); assert l == 35; l = excerpt.parseLong(); assert l == 8; l = excerpt.parseLong(); assert l == 49; s = excerpt.parseEnum(String.class, StopCharTesters.CONTROL_STOP); assert s.equals("PHLX"); l = excerpt.parseLong(); assert l == 56;
// create a Chronicle for reading or writing. String basePath = TMP + File.separator + "deleteme.ict"; IndexedChronicle tsc = new IndexedChronicle(basePath); // create a handle to excerpts in the chronicle. Excerpt excerpt = tsc.createExcerpt(); // add 1024 entries. int counter = 1; for (int i = 0; i < 1024; i++) { excerpt.startExcerpt(129); for (int j = 0; j < 128; j += 8) excerpt.writeLong(counter++); excerpt.write(-1); excerpt.finish(); } // somewhere else read the file int counter2 = 1; Excerpt excerpt2 = tsc.createExcerpt(); while (excerpt2.nextIndex()) { for (int j = 0; j < 128; j += 8) { long actual = excerpt2.readLong(); long expected = counter2++; if (expected != actual) assertEquals(expected, actual); } assertEquals(-1, excerpt2.readByte()); excerpt2.finish(); } assertEquals(counter, counter2);
if (i == 0) start = System.nanoTime(); record.startExcerpt(256); record.writeInt(i + warmup); int pos = record.position(); record.append(i + warmup); // as text. record.write(xs, 0, pos + 120 - record.position()); int pos2 = record.position(); record.append(i + warmup); // as text. record.write(ys, 0, pos2 + 120 - record.position()); record.finish(); ptr %= rows; assertTrue(record.index(ptr)); iterator.found = false; iterator.ptr = ptr;
public boolean readOne() { if (!excerpt.nextIndex()) return false; int pos = excerpt.position(); MessageType mt = excerpt.readEnum(MessageType.class); if (mt == null) { // rewind and read again. excerpt.position(pos); System.err.println("Unknown message type " + excerpt.readUTF()); return true; } switch (mt) { case report: { metaData.readFromEngine(excerpt, sourceId); report.readMarshallable(excerpt); gwEvents.report(metaData, report); break; } default: System.err.println("Unknown message type " + mt); break; } return true; } }
private void writeClear() { Excerpt excerpt = getExcerpt(16, clear); long eventId = excerpt.index(); excerpt.writeInt(offset); excerpt.writeInt(size()); excerpt.finish(); if (!notifyOff && !listeners.isEmpty()) { for (int i = 0; i < listeners.size(); i++) { CollectionListener<E> listener = listeners.get(i); listener.eventStart(eventId, name); for (int j = 0; j < underlying.size(); j++) { listener.remove(underlying.get(j)); } listener.eventEnd(true); } } }
public void readFromGateway(@NotNull Excerpt in) { excerptId = in.index(); writeTimestampMillis = in.readLong(); inWriteTimestamp7 = in.readLong(); inReadTimestamp7Delta = in.readUnsignedInt(); if (inReadTimestamp7Delta == 0 && targetReader) in.writeUnsignedInt(in.position() - 4, inReadTimestamp7Delta = fastTime() - inWriteTimestamp7); }
@Override public void onExcerpt(@NotNull Excerpt excerpt) { int position = excerpt.position(); WrapperEvent event = excerpt.readEnum(WrapperEvent.class); if (event == null) { excerpt.position(position); System.err.println("Unknown event type " + excerpt.readUTF()); return; listeners.get(i).eventStart(excerpt.index(), name); int count = excerpt.readInt(); for (int i = 0; i < count; i++) onExcerptPut(excerpt); Object object = excerpt.readObject(); for (int i = 0; i < listeners.size(); i++) listeners.get(i).onEvent(object); boolean lastEvent = !excerpt.hasNextIndex();