public static <A extends Appendable> long capturedFieldQuery(TrieParserReader reader, int idx, int stopBytesCount, TrieParser trie) { int pos = idx*4; assert(pos < reader.capturedValues.length) : "Either the idx argument is too large or TrieParseReader was not constructed to hold this many fields"; int type = reader.capturedValues[pos++]; assert(type==0); int bpos = reader.capturedValues[pos++]; int blen = reader.capturedValues[pos++]; int bmsk = reader.capturedValues[pos++]; //we add 2 to the length to pick up the stop chars, this ensure we have enough text to match return query(reader, trie, reader.capturedBlobArray, bpos, blen+stopBytesCount, bmsk, -1); }
public static <A extends Appendable> long capturedFieldQuery(TrieParserReader reader, int idx, TrieParserReader reader2, int stopBytesCount, TrieParser trie) { int pos = idx*4; assert(pos < reader.capturedValues.length) : "Either the idx argument is too large or TrieParseReader was not constructed to hold this many fields"; int type = reader.capturedValues[pos++]; assert(type==0); int bpos = reader.capturedValues[pos++]; int blen = reader.capturedValues[pos++]; int bmsk = reader.capturedValues[pos++]; //we add 2 to the length to pick up the stop chars, this ensure we have enough text to match return query(reader2, trie, reader.capturedBlobArray, bpos, blen+stopBytesCount, bmsk, -1); }
/** * * @param source byte arg * @param position int arg * @param length int arg * @param mask int arg * @see TrieParserReader * @return token */ public long tokenize(byte[] source, int position, int length, int mask) { return TrieParserReader.query(tpr, tp, source, position, length, mask); }
private int customDispatchTargetForPrivateTopic(final PrivateTopic topic) { //the dispatch function can never be changed at runtime so no need to look it up again //once it is known. if (-2 == topic.customDispatchId) { //-1 represents that there is no custom distpatch but we did look it up once. topic.customDispatchId = (int)TrieParserReader.query(methodReader, methodLookup, topic.topic); } return topic.customDispatchId; }
@Override public long parse(TrieParserReader reader, TrieParser trie, int length) { long result = reader.query(reader, trie, backing, position, length, byteMask); if (result!=-1) { position = reader.sourcePos; } return result; }
public static <A extends Appendable> long capturedFieldQuery(TrieParserReader reader, int idx, TrieParserReader reader2, int stopBytesCount, TrieParser trie) { int pos = idx*4; assert(pos < reader.capturedValues.length) : "Either the idx argument is too large or TrieParseReader was not constructed to hold this many fields"; int type = reader.capturedValues[pos++]; assert(type==0); int bpos = reader.capturedValues[pos++]; int blen = reader.capturedValues[pos++]; int bmsk = reader.capturedValues[pos++]; //we add 2 to the length to pick up the stop chars, this ensure we have enough text to match return query(reader2, trie, reader.capturedBlobArray, bpos, blen+stopBytesCount, bmsk, -1); }
@Override public long parse(TrieParserReader reader, TrieParser trie, int length) { long result = reader.query(reader, trie, backing, position, length, byteMask); if (result!=-1) { position = reader.sourcePos; } return result; }
public long fieldLookup(CharSequence sequence, int struct) { assert ((IS_STRUCT_BIT&struct) !=0 ) : "Struct Id must be passed in"; TrieParserReader reader = TrieParserReaderLocal.get(); return TrieParserReader.query(reader, fields[STRUCT_MASK&struct], sequence); }
public long fieldLookup(CharSequence sequence, int structId) { assert ((IS_STRUCT_BIT&structId) !=0 ) : "Struct Id must be passed in"; assert (structId>=0) : "Bad Struct ID "+structId; return TrieParserReader.query(TrieParserReaderLocal.get(), fields[STRUCT_MASK&structId], sequence); }
public int valueOf(byte[] data, int offset, int length, int mask) { int value = (int)TrieParserReader.query(reader, trie, data, offset, length, mask, -1); if (value>0) { return value; } else { trie.setValue(data, offset, length, mask, ++squenceCount); return squenceCount; } }
public static int lookupHostId(byte[] hostBytes, int pos, int length, int mask) { int result = (int)TrieParserReader.query(TrieParserReaderLocal.get(), domainRegistry, hostBytes, pos, length, mask); if (result<0) { throw new UnsupportedOperationException("Can not find host "+Appendables.appendUTF8(new StringBuilder(), hostBytes, pos, length, mask)+" pos:"+pos+" len:"+length+" mask:"+mask); } return result; }
public static long convertTextToLong(TrieParserReader parserReader, byte[] backing, int position, int mask, int available) { return (TrieParserReader.query(parserReader, textToNumberTrieParser(), backing, position, available, mask)>=0) ? TrieParserReader.capturedLongField(parserReader, 0) : -1; }
public static long convertTextToLong(TrieParserReader parserReader, byte[] backing, int position, int mask, int available) { return (TrieParserReader.query(parserReader, textToNumberTrieParser(), backing, position, available, mask)>=0) ? TrieParserReader.capturedLongField(parserReader, 0) : -1; }
private final int methodLookup(Pipe<MessageSubscription> p, final int len, final int pos) { int result = (int)TrieParserReader.query(methodReader, methodLookup, Pipe.blob(p), pos, len, Pipe.blobMask(p)); assert(result!=-1) : "requested method was not found in: "+methodReader.debugAsUTF8(methodReader, new StringBuilder()); return result; }
public static double convertTextToDouble(TrieParserReader parserReader, byte[] backing, int position, int available, int mask) { return (TrieParserReader.query(parserReader, textToNumberTrieParser(), backing, position, available, mask)>=0) ? Decimal.asDouble( TrieParserReader.capturedDecimalMField(parserReader, 0), TrieParserReader.capturedDecimalEField(parserReader, 0)) : -1; }
public void store(byte[] backing, int pos, int len, int mask) { if (TrieParserReader.query(reader, DataInputBlobReader.textToNumberTrieParser(), backing, pos, len, mask)>=0) { byte e = TrieParserReader.capturedDecimalEField(reader,0); long m = TrieParserReader.capturedDecimalMField(reader,0); this.value = Decimal.asLong(m, e); } else { //TODO: We should use the Rabin Fingerprint to have a strong model of collision this.value = MurmurHash.hash32(backing, pos, len, 314-579-0066);//negative hash } }
public void store(byte[] backing, int pos, int len, int mask) { if (TrieParserReader.query(reader, DataInputBlobReader.textToNumberTrieParser(), backing, pos, len, mask)>=0) { byte e = TrieParserReader.capturedDecimalEField(reader,0); long m = TrieParserReader.capturedDecimalMField(reader,0); this.value = Decimal.asLong(m, e); } else { //TODO: We should use the Rabin Fingerprint to have a strong model of collision this.value = MurmurHash.hash32(backing, pos, len, 314-579-0066);//negative hash } }
public static long query(TrieParserReader trieReader, TrieParser trie, Pipe<?> input, final long unfoundResult) { int meta = Pipe.takeByteArrayMetaData(input); int length = Pipe.takeByteArrayLength(input); return query(trieReader, trie, Pipe.byteBackingArray(meta, input), Pipe.bytePosition(meta, input, length), length, Pipe.blobMask(input), unfoundResult ); }
public static long blobQuery(TrieParserReader reader, TrieParser trie) { Pipe.outputStream(reader.workingPipe).closeLowLevelField(); Pipe.publishWrites(reader.workingPipe); Pipe.confirmLowLevelWrite(reader.workingPipe, Pipe.sizeOf(reader.workingPipe, RawDataSchema.MSG_CHUNKEDSTREAM_1)); /// Pipe.takeMsgIdx(reader.workingPipe); long result = TrieParserReader.query(reader,trie,reader.workingPipe,-1); Pipe.confirmLowLevelRead(reader.workingPipe, Pipe.sizeOf(reader.workingPipe, RawDataSchema.MSG_CHUNKEDSTREAM_1)); Pipe.releaseReadLock(reader.workingPipe); return result; }
public static long blobQuery(TrieParserReader reader, TrieParser trie) { Pipe.outputStream(reader.workingPipe).closeLowLevelField(); Pipe.publishWrites(reader.workingPipe); Pipe.confirmLowLevelWrite(reader.workingPipe, Pipe.sizeOf(reader.workingPipe, RawDataSchema.MSG_CHUNKEDSTREAM_1)); /// Pipe.takeMsgIdx(reader.workingPipe); long result = TrieParserReader.query(reader,trie,reader.workingPipe,-1); Pipe.confirmLowLevelRead(reader.workingPipe, Pipe.sizeOf(reader.workingPipe, RawDataSchema.MSG_CHUNKEDSTREAM_1)); Pipe.releaseReadLock(reader.workingPipe); return result; }