public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
/** * get INetReader to make streaming output from realtime xlogs. * * @param jsonGenerator - low-level streaming json generator * @param countable - to keep xlog count * @return INetReader */ private INetReader getRealTimeXLogReader(JsonGenerator jsonGenerator, int[] countable) { return in -> { Pack p = in.readPack(); if (p.getPackType() == PackEnum.MAP) { //meta data arrive ahead of xlog pack MapPack metaPack = (MapPack) p; jsonGenerator.writeNumberField("xlogLoop", metaPack.getInt(ParamConstant.OFFSET_LOOP)); jsonGenerator.writeNumberField("xlogIndex", metaPack.getInt(ParamConstant.OFFSET_INDEX)); jsonGenerator.writeArrayFieldStart("xlogs"); } else { XLogPack xLogPack = (XLogPack) p; jsonGenerator.writeObject(SXLog.of(xLogPack)); countable[0]++; } }; }
/** * get INetReader to make streaming output from xlogs. * * @param jsonGenerator - low-level streaming json generator * @param serverId - serverId (needs for retrieving dictionary text) * @return INetReader */ private INetReader getPageableXLogReader(JsonGenerator jsonGenerator, int serverId) { int[] countable = {0}; return in -> { Pack p = in.readPack(); if (p.getPackType() != PackEnum.MAP) { // XLogPack case XLogPack xLogPack = (XLogPack) p; jsonGenerator.writeObject(XLogData.of(xLogPack, serverId)); countable[0]++; } else { // MapPack case (//meta data arrive followed by xlog pack) jsonGenerator.writeEndArray(); MapPack metaPack = (MapPack) p; jsonGenerator.writeBooleanField("hasMore", metaPack.getBoolean(ParamConstant.XLOG_RESULT_HAS_MORE)); jsonGenerator.writeNumberField("lastTxid", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TXID)); jsonGenerator.writeNumberField("lastXLogTime", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TIME)); jsonGenerator.writeNumberField("count", countable[0]); } }; } }
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
/** * get INetReader to make streaming output from xlogs. * * @param jsonGenerator - low-level streaming json generator * @return INetReader */ private INetReader getPageableXLogReader(JsonGenerator jsonGenerator) { int[] countable = {0}; return in -> { Pack p = in.readPack(); if (p.getPackType() != PackEnum.MAP) { // XLogPack case XLogPack xLogPack = (XLogPack) p; jsonGenerator.writeObject(SXLog.of(xLogPack)); countable[0]++; } else { // MapPack case (//meta data arrive followed by xlog pack) jsonGenerator.writeEndArray(); MapPack metaPack = (MapPack) p; jsonGenerator.writeBooleanField("hasMore", metaPack.getBoolean(ParamConstant.XLOG_RESULT_HAS_MORE)); jsonGenerator.writeNumberField("lastTxid", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TXID)); jsonGenerator.writeNumberField("lastXLogTime", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TIME)); jsonGenerator.writeNumberField("count", countable[0]); } }; } }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
private void process() { if (server.isOpen() == false || server.getSession() == 0) { return; } try { RealTimeXLogRequest realTimeXLogRequest = new RealTimeXLogRequest(loop, index, server.getId(), Collections.emptySet()); xLogConsumer.handleRealTimeXLog(realTimeXLogRequest, in -> { Pack p = in.readPack(); if (p.getPackType() == PackEnum.MAP) { //meta data arrive ahead of xlog pack MapPack metaPack = (MapPack) p; index = metaPack.getInt(ParamConstant.OFFSET_INDEX); loop = metaPack.getInt(ParamConstant.OFFSET_LOOP); } else { xLogLoopCache.add((XLogPack) p); } }); } catch (Throwable t) { if (t.getMessage() != null && t.getMessage().equals(lastError) && System.currentTimeMillis() < (lastTime + EXEPTION_IGNORE_TIME)) { //ignore } else { lastError = t.getMessage(); lastTime = System.currentTimeMillis(); log.error("[XLogThread] at {}, error:{}", server, t.getMessage()); } return; } } }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
/** * get INetReader to make streaming output from realtime xlogs. * * @param jsonGenerator - low-level streaming json generator * @param countable - to keep xlog count * @return INetReader */ private INetReader getRealTimeXLogReader(JsonGenerator jsonGenerator, int[] countable) { return in -> { Pack p = in.readPack(); if (p.getPackType() == PackEnum.MAP) { //meta data arrive ahead of xlog pack MapPack metaPack = (MapPack) p; jsonGenerator.writeNumberField("xlogLoop", metaPack.getInt(ParamConstant.OFFSET_LOOP)); jsonGenerator.writeNumberField("xlogIndex", metaPack.getInt(ParamConstant.OFFSET_INDEX)); jsonGenerator.writeArrayFieldStart("xlogs"); } else { XLogPack xLogPack = (XLogPack) p; jsonGenerator.writeObject(SXLog.of(xLogPack)); countable[0]++; } }; }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
private void process() { if (server.isOpen() == false || server.getSession() == 0) { return; } try { RealTimeXLogRequest realTimeXLogRequest = new RealTimeXLogRequest(loop, index, server.getId(), Collections.emptySet()); xLogConsumer.handleRealTimeXLog(realTimeXLogRequest, in -> { Pack p = in.readPack(); if (p.getPackType() == PackEnum.MAP) { //meta data arrive ahead of xlog pack MapPack metaPack = (MapPack) p; index = metaPack.getInt(ParamConstant.OFFSET_INDEX); loop = metaPack.getInt(ParamConstant.OFFSET_LOOP); } else { xLogLoopCache.add((XLogPack) p); } }); } catch (Throwable t) { if (t.getMessage() != null && t.getMessage().equals(lastError) && System.currentTimeMillis() < (lastTime + EXEPTION_IGNORE_TIME)) { //ignore } else { lastError = t.getMessage(); lastTime = System.currentTimeMillis(); log.error("[XLogThread] at {}, error:{}", server, t.getMessage()); } return; } } }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }
/** * get INetReader to make streaming output from xlogs. * * @param jsonGenerator - low-level streaming json generator * @return INetReader */ private INetReader getPageableXLogReader(JsonGenerator jsonGenerator) { int[] countable = {0}; return in -> { Pack p = in.readPack(); if (p.getPackType() != PackEnum.MAP) { // XLogPack case XLogPack xLogPack = (XLogPack) p; jsonGenerator.writeObject(SXLog.of(xLogPack)); countable[0]++; } else { // MapPack case (//meta data arrive followed by xlog pack) jsonGenerator.writeEndArray(); MapPack metaPack = (MapPack) p; jsonGenerator.writeBooleanField("hasMore", metaPack.getBoolean(ParamConstant.XLOG_RESULT_HAS_MORE)); jsonGenerator.writeNumberField("lastTxid", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TXID)); jsonGenerator.writeNumberField("lastXLogTime", metaPack.getLong(ParamConstant.XLOG_RESULT_LAST_TIME)); jsonGenerator.writeNumberField("count", countable[0]); } }; } }
public Pack readPack() throws IOException { this.offset++; byte type = this.inner.readByte(); return PackEnum.create(type).read(this); } public MapPack readMapPack() throws IOException {
public DataOutputX writePack(Pack packet) throws IOException { this.writeByte(packet.getPackType()); packet.write(this); return this; }