private void writeVariableNamesToBeVerified(ArrayList<YoVariable<?>> variables) throws IOException { dataOutputStream.writeInt(variables.size()); dataOutputStream.flush(); for (YoVariable<?> yoVariable : variables) { dataOutputStream.writeUTF(yoVariable.getFullNameWithNameSpace()); dataOutputStream.writeInt(yoVariable.getYoVariableType().ordinal()); dataOutputStream.flush(); try { Thread.sleep(1); // Give the other side some time to process it. } catch (InterruptedException e) { } } }
private void readAndVerifyVariableNames(ArrayList<YoVariable<?>> variables) throws IOException { int numberOfVariablesFromStream = dataInputStream.readInt(); int numberOfVariables = variables.size(); if (numberOfVariablesFromStream != numberOfVariables) throw new RuntimeException("numberOfVariablesFromStream = " + numberOfVariablesFromStream + ", but numberOfVariables = " + numberOfVariables); for (int i = 0; i < numberOfVariables; i++) { String fullName = dataInputStream.readUTF(); int yoVariableTypeOrdinal = dataInputStream.readInt(); YoVariableType yoVariableType = YoVariableType.values()[yoVariableTypeOrdinal]; YoVariable<?> yoVariable = variables.get(i); if (yoVariable.getYoVariableType() != yoVariableType) { throw new RuntimeException("yoVariable.getYoVariableType() = " + yoVariable.getYoVariableType() + " != yoVariableType = " + yoVariableType); } verifyNamesAreConsistent(yoVariable.getFullNameWithNameSpace(), fullName); } }
private ArrayList<YoVariable<?>> readAndCreateVariables(YoVariableRegistry rootRegistry) throws IOException { ArrayList<YoVariable<?>> ret = new ArrayList<YoVariable<?>>(); int numberOfVariablesFromStream = dataInputStream.readInt(); for (int i = 0; i < numberOfVariablesFromStream; i++) { String fullName = dataInputStream.readUTF(); int yoVariableTypeOrdinal = dataInputStream.readInt(); YoVariableType yoVariableType = YoVariableType.values()[yoVariableTypeOrdinal]; String variableName = NameSpace.stripOffNameSpaceToGetVariableName(fullName); NameSpace fullNameSpace = NameSpace.createNameSpaceFromAFullVariableName(fullName); YoVariableRegistry registry = rootRegistry.getOrCreateAndAddRegistry(fullNameSpace); YoVariable<?> yoVariable = createNewYoVariable(variableName, yoVariableType, registry); ret.add(yoVariable); verifyNamesAreConsistent(yoVariable.getFullNameWithNameSpace(), fullName); } return ret; }