public void registerSelector(Selector selector) { //confirm it is not already listed int i = (null==selectors) ? 0 : selectors.length; while (--i>=0) { if (selectors[i]==selector) { return;//do not add, it is already there. } } //grow the array selectors = ArrayGrow.appendToArray(selectors, selector); assert(null!=selectors); }
@Override public long addSubscription(CharSequence internalTopic, CharSequence externalTopic, IngressConverter converter) { ensureConnected(); internalTopicsSub = ArrayGrow.appendToArray(internalTopicsSub, internalTopic); externalTopicsSub = ArrayGrow.appendToArray(externalTopicsSub, externalTopic); convertersSub = ArrayGrow.appendToArray(convertersSub,converter); qosSub = ArrayGrow.appendToArray(qosSub, subscriptionQoS); assert(internalTopicsSub.length == externalTopicsSub.length); assert(internalTopicsSub.length == convertersSub.length); assert(internalTopicsSub.length == qosSub.length); return internalTopicsSub.length-1; }
@Override public long addTransmission(CharSequence internalTopic, CharSequence externalTopic, EgressConverter converter) { ensureConnected(); internalTopicsXmit = ArrayGrow.appendToArray(internalTopicsXmit, internalTopic); externalTopicsXmit = ArrayGrow.appendToArray(externalTopicsXmit, externalTopic); convertersXmit = ArrayGrow.appendToArray(convertersXmit,converter); qosXmit = ArrayGrow.appendToArray(qosXmit, transmissionFieldQOS); assert(internalTopicsXmit.length == externalTopicsXmit.length); assert(internalTopicsXmit.length == convertersXmit.length); assert(internalTopicsXmit.length == qosXmit.length); return internalTopicsXmit.length-1; }
@Override public long addSubscription(CharSequence internalTopic, CharSequence externalTopic) { ensureConnected(); internalTopicsSub = ArrayGrow.appendToArray(internalTopicsSub, internalTopic); externalTopicsSub = ArrayGrow.appendToArray(externalTopicsSub, externalTopic); convertersSub = ArrayGrow.appendToArray(convertersSub,IngressMQTTStage.copyConverter); qosSub = ArrayGrow.appendToArray(qosSub, subscriptionQoS); assert(internalTopicsSub.length == externalTopicsSub.length); assert(internalTopicsSub.length == convertersSub.length); assert(internalTopicsSub.length == qosSub.length); return internalTopicsSub.length-1; }
@Override public long addTransmission(CharSequence internalTopic, CharSequence externalTopic) { ensureConnected(); //logger.trace("added subscription to {} in order to transmit out to ",internalTopic, externalTopic); internalTopicsXmit = ArrayGrow.appendToArray(internalTopicsXmit, internalTopic); externalTopicsXmit = ArrayGrow.appendToArray(externalTopicsXmit, externalTopic); convertersXmit = ArrayGrow.appendToArray(convertersXmit,EgressMQTTStage.copyConverter); qosXmit = ArrayGrow.appendToArray(qosXmit, transmissionFieldQOS); retainXmit = ArrayGrow.appendToArray(retainXmit, transmissionFieldRetain); assert(internalTopicsXmit.length == externalTopicsXmit.length); assert(internalTopicsXmit.length == convertersXmit.length); assert(internalTopicsXmit.length == qosXmit.length); return internalTopicsXmit.length-1; }
public long growStruct(int structId, StructType fieldType, int fieldDim, byte[] name) { assert(null!=fieldType); assert(null!=this.fieldNames); //grow all the arrays with new value assert((IS_STRUCT_BIT&structId)!=0) : "must be valid struct"; int idx = STRUCT_MASK & structId; assert(null!=this.fieldNames[idx]) : "Bad field names for struct at "+idx+" in "+this.hashCode(); int newFieldIdx = this.fieldNames[idx].length; //add text lookup assert(isNotAlreadyDefined(this.fields[idx], name)) : "field of this name already defined."; //only 1 name is returned, the first is considered canonical this.fieldNames[idx] = ArrayGrow.appendToArray(this.fieldNames[idx], name); this.fieldTypes[idx] = ArrayGrow.appendToArray(this.fieldTypes[idx], fieldType, StructType.class); this.fieldDims[idx] = ArrayGrow.appendToArray(this.fieldDims[idx], fieldDim); this.fieldLocals[idx] = ArrayGrow.appendToArray(this.fieldLocals[idx], null, Object.class); this.fieldValidators[idx] = ArrayGrow.appendToArray(this.fieldValidators[idx], null, Object.class); this.fieldRequired[idx] = ArrayGrow.appendToArray(this.fieldRequired[idx], false); long fieldId = ((long)(IS_STRUCT_BIT|(STRUCT_MASK & structId)))<<STRUCT_OFFSET | newFieldIdx; this.fields[idx].setValue(name, fieldId); return fieldId; }
public long growStruct(int structId, StructType fieldType, int fieldDim, byte[] name) { assert(null!=fieldType); assert(null!=this.fieldNames); //grow all the arrays with new value assert((IS_STRUCT_BIT&structId)!=0) : "must be valid struct"; int idx = STRUCT_MASK & structId; assert(null!=this.fieldNames[idx]) : "Bad field names for struct at "+idx+" in "+this.hashCode(); int newFieldIdx = this.fieldNames[idx].length; //add text lookup assert(isNotAlreadyDefined(this.fields[idx], name)) : "field of this name already defined."; //only 1 name is returned, the first is considered canonical this.fieldNames[idx] = ArrayGrow.appendToArray(this.fieldNames[idx], name); this.fieldTypes[idx] = ArrayGrow.appendToArray(this.fieldTypes[idx], fieldType, StructType.class); this.fieldDims[idx] = ArrayGrow.appendToArray(this.fieldDims[idx], fieldDim); this.fieldLocals[idx] = ArrayGrow.appendToArray(this.fieldLocals[idx], null, Object.class); this.fieldValidators[idx] = ArrayGrow.appendToArray(this.fieldValidators[idx], null, Object.class); this.fieldRequired[idx] = ArrayGrow.appendToArray(this.fieldRequired[idx], false); long fieldId = ((long)(IS_STRUCT_BIT|(STRUCT_MASK & structId)))<<STRUCT_OFFSET | newFieldIdx; this.fields[idx].setValue(name, fieldId); return fieldId; }