public <T> long fieldLookupByIdentity(T attachedObject, int structId) { assert ((IS_STRUCT_BIT&structId) !=0 && (structId>0) ) : "Struct Id must be passed in, got "+structId; int idx = lookupIndexOffset(this, attachedObject, structId, attachedObject.hashCode()); return buildFieldId(attachedObject, structId, idx); }
public <T> long fieldLookupByIdentity(T attachedObject, int structId) { assert ((IS_STRUCT_BIT&structId) !=0 && (structId>0) ) : "Struct Id must be passed in, got "+structId; return buildFieldId(structId, lookupIndexOffset(this, attachedObject, structId)); }
public <T> long fieldLookupByIdentity(T attachedObject, int structId) { assert ((IS_STRUCT_BIT&structId) !=0 && (structId>0) ) : "Struct Id must be passed in, got "+structId; return buildFieldId(structId, lookupIndexOffset(this, attachedObject, structId)); }
public int[] preBuildIndexOffsets(Object structAssocObj) { StructRegistry structRegistry = Pipe.structRegistry(channelWriter.backingPipe); int structId = structRegistry.structLookupByIdentity(structAssocObj); int[] result = new int[pos+1]; result[pos] = structId;//store struct id in last position of this array. int p = pos; while (--p>=0) { result[p] = StructRegistry.lookupIndexOffset(structRegistry, associations[p], structId) & StructRegistry.FIELD_MASK; } return result; }
public int[] preBuildIndexOffsets(Object structAssocObj) { StructRegistry structRegistry = Pipe.structRegistry(channelWriter.backingPipe); int structId = structRegistry.structLookupByIdentity(structAssocObj); int[] result = new int[pos+1]; result[pos] = structId;//store struct id in last position of this array. int p = pos; while (--p>=0) { result[p] = StructRegistry.lookupIndexOffset(structRegistry, associations[p], structId) & StructRegistry.FIELD_MASK; } return result; }
public int indexOffset(Object association) { StructRegistry structRegistry = Pipe.structRegistry(DataInputBlobReader.getBackingPipe(channelReader)); int structId = DataInputBlobReader.getStructType(channelReader); int idx = StructRegistry.lookupIndexOffset(structRegistry, association, structId); int indexOffset = StructRegistry.FIELD_MASK&(int)structRegistry.buildFieldId(structId, idx); return indexOffset; }
/** * Defines the record after fields are defined */ public void selectStruct(int structId) { StructRegistry structRegistry = Pipe.structRegistry(channelWriter.backingPipe); assert(DataOutputBlobWriter.getStructType(channelWriter)<=0) : "call selectStruct(id) only after setting all the object fields."; DataOutputBlobWriter.commitBackData(channelWriter, structId); int p = pos; while (--p>=0) { DataOutputBlobWriter.setIntBackData(channelWriter, positions[p], StructRegistry.lookupIndexOffset(structRegistry, associations[p], structId, associations[p].hashCode()) & StructRegistry.FIELD_MASK ); } pos = 0;//cleared for next time; }
public int indexOffset(Object association) { StructRegistry structRegistry = Pipe.structRegistry(DataInputBlobReader.getBackingPipe(channelReader)); int structId = DataInputBlobReader.getStructType(channelReader); int idx = StructRegistry.lookupIndexOffset(structRegistry, association, structId); int indexOffset = StructRegistry.FIELD_MASK&(int)structRegistry.buildFieldId(structId, idx); return indexOffset; }
/** * Defines the record after fields are defined */ public void selectStruct(int structId) { StructRegistry structRegistry = Pipe.structRegistry(channelWriter.backingPipe); assert(DataOutputBlobWriter.getStructType(channelWriter)<=0) : "call selectStruct(id) only after setting all the object fields."; DataOutputBlobWriter.commitBackData(channelWriter, structId); int p = pos; while (--p>=0) { DataOutputBlobWriter.setIntBackData(channelWriter, positions[p], //can we cache this lookup?? //lookup the offset of this object in this struct. StructRegistry.lookupIndexOffset(structRegistry, associations[p], structId) & StructRegistry.FIELD_MASK ); } pos = 0;//cleared for next time; }
public ChannelReader read(Object association) { StructRegistry structRegistry = Pipe.structRegistry(DataInputBlobReader.getBackingPipe(channelReader)); int structId = DataInputBlobReader.getStructType(channelReader); assert ((StructRegistry.IS_STRUCT_BIT&structId) !=0 && (structId>0) ) : "Struct Id must be passed in, got "+structId; int idx = StructRegistry.lookupIndexOffset(structRegistry, association, structId); return read(structRegistry.buildFieldId(structId, idx)); }
public ChannelReader read(Object association) { StructRegistry structRegistry = Pipe.structRegistry(DataInputBlobReader.getBackingPipe(channelReader)); int structId = DataInputBlobReader.getStructType(channelReader); assert ((StructRegistry.IS_STRUCT_BIT&structId) !=0 && (structId>0) ) : "Struct Id must be passed in, got "+structId; int idx = StructRegistry.lookupIndexOffset(structRegistry, association, structId); return read(structRegistry.buildFieldId(structId, idx)); }
/** * Defines the record after fields are defined */ public void selectStruct(int structId) { StructRegistry structRegistry = Pipe.structRegistry(channelWriter.backingPipe); assert(DataOutputBlobWriter.getStructType(channelWriter)<=0) : "call selectStruct(id) only after setting all the object fields."; DataOutputBlobWriter.commitBackData(channelWriter, structId); int p = pos; while (--p>=0) { DataOutputBlobWriter.setIntBackData(channelWriter, positions[p], //can we cache this lookup?? //lookup the offset of this object in this struct. StructRegistry.lookupIndexOffset(structRegistry, associations[p], structId) & StructRegistry.FIELD_MASK ); } pos = 0;//cleared for next time; }