public static StreamContext streamContext() { return cache.get().reset(); }
if (context.streamShardTarget() == ShardTargetType.STREAM) { if (shard == null) { out.writeBoolean(false); shard.writeTo(out); } else if (context.streamShardTarget() == ShardTargetType.LOOKUP) { if (shard == null) { out.writeVInt(0); } else { out.writeVInt(context.shardHandleLookup().get(shard)); for (Map.Entry<String, InternalSearchHits> entry : innerHits.entrySet()) { out.writeString(entry.getKey()); ShardTargetType shardTarget = context.streamShardTarget(); entry.getValue().writeTo(out, context.streamShardTarget(ShardTargetType.NO_STREAM)); context.streamShardTarget(shardTarget);
if (context.streamShardTarget() == ShardTargetType.STREAM) { if (in.readBoolean()) { shard = readSearchShardTarget(in); } else if (context.streamShardTarget() == ShardTargetType.LOOKUP) { int lookupId = in.readVInt(); if (lookupId > 0) { shard = context.handleShardLookup().get(lookupId); for (int i = 0; i < size; i++) { String key = in.readString(); ShardTargetType shardTarget = context.streamShardTarget(); InternalSearchHits value = InternalSearchHits.readSearchHits(in, context.streamShardTarget(ShardTargetType.NO_STREAM)); context.streamShardTarget(shardTarget); innerHits.put(key, value);
out.writeVInt(hits.length); if (hits.length > 0) { if (context.streamShardTarget() == StreamContext.ShardTargetType.LOOKUP) { Integer handle = context.shardHandleLookup().get(hit.shard()); if (handle == null) { context.shardHandleLookup().put(hit.shard(), counter++); out.writeVInt(context.shardHandleLookup().size()); if (!context.shardHandleLookup().isEmpty()) { for (Map.Entry<SearchShardTarget, Integer> entry : context.shardHandleLookup().entrySet()) { out.writeVInt(entry.getValue()); entry.getKey().writeTo(out);
public void readFrom(StreamInput in, StreamContext context) throws IOException { totalHits = in.readVLong(); maxScore = in.readFloat(); int size = in.readVInt(); if (size == 0) { hits = EMPTY; } else { if (context.streamShardTarget() == StreamContext.ShardTargetType.LOOKUP) { // read the lookup table first int lookupSize = in.readVInt(); for (int i = 0; i < lookupSize; i++) { context.handleShardLookup().put(in.readVInt(), readSearchShardTarget(in)); } } hits = new InternalSearchHit[size]; for (int i = 0; i < hits.length; i++) { hits[i] = readSearchHit(in, context); } } }
@Override public void writeTo(StreamOutput out) throws IOException { writeTo(out, InternalSearchHits.streamContext().streamShardTarget(ShardTargetType.STREAM)); }
@Override public void readFrom(StreamInput in) throws IOException { readFrom(in, InternalSearchHits.streamContext().streamShardTarget(ShardTargetType.STREAM)); }
@Override protected StreamContext initialValue() { return new StreamContext(); } };
@Override public void readFrom(StreamInput in) throws IOException { readFrom(in, streamContext().streamShardTarget(StreamContext.ShardTargetType.LOOKUP)); }
@Override public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeLong(id); hits.writeTo(out, InternalSearchHits.streamContext().streamShardTarget(StreamContext.ShardTargetType.NO_STREAM)); } }
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); id = in.readLong(); hits = InternalSearchHits.readSearchHits(in, InternalSearchHits.streamContext().streamShardTarget(StreamContext.ShardTargetType.NO_STREAM)); }
@Override public void writeTo(StreamOutput out) throws IOException { writeTo(out, streamContext().streamShardTarget(StreamContext.ShardTargetType.LOOKUP)); }