Loading tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/ByteBufferReader.java +4 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,10 @@ public class ByteBufferReader { return new String(bytes, StandardCharsets.UTF_8); } public int readByte(int i) { return Byte.toUnsignedInt(mByteBuffer.get(i)); } public void position(int newPosition) { mByteBuffer.position(newPosition); } Loading tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/FlagValueList.java +6 −18 Original line number Diff line number Diff line Loading @@ -17,33 +17,21 @@ package android.aconfig.storage; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; public class FlagValueList { private Header mHeader; private List<Boolean> mList; private int mSize; private ByteBufferReader mReader; public static FlagValueList fromBytes(ByteBuffer bytes) { FlagValueList flagValueList = new FlagValueList(); ByteBufferReader reader = new ByteBufferReader(bytes); Header header = Header.fromBytes(reader); flagValueList.mHeader = header; flagValueList.mList = new ArrayList(header.mNumFlags); reader.position(header.mBooleanValueOffset); for (int i = 0; i < header.mNumFlags; i++) { boolean val = reader.readByte() == 1; flagValueList.mList.add(val); } flagValueList.mSize = flagValueList.mList.size(); flagValueList.mReader = new ByteBufferReader(bytes); flagValueList.mHeader = Header.fromBytes(flagValueList.mReader); return flagValueList; } public boolean get(int index) { return mList.get(index); public boolean getBoolean(int index) { return mReader.readByte(mHeader.mBooleanValueOffset + index) == 1; } public Header getHeader() { Loading @@ -51,7 +39,7 @@ public class FlagValueList { } public int size() { return mSize; return mHeader.mNumFlags; } public static class Header { Loading tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/PackageTable.java +12 −13 Original line number Diff line number Diff line Loading @@ -17,31 +17,30 @@ package android.aconfig.storage; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.Objects; public class PackageTable { private Header mHeader; private Map<String, Node> mNodeMap; private ByteBufferReader mReader; public static PackageTable fromBytes(ByteBuffer bytes) { PackageTable packageTable = new PackageTable(); ByteBufferReader reader = new ByteBufferReader(bytes); Header header = Header.fromBytes(reader); packageTable.mHeader = header; packageTable.mNodeMap = new HashMap(TableUtils.getTableSize(header.mNumPackages)); reader.position(header.mNodeOffset); for (int i = 0; i < header.mNumPackages; i++) { Node node = Node.fromBytes(reader); packageTable.mNodeMap.put(node.mPackageName, node); } packageTable.mReader = new ByteBufferReader(bytes); packageTable.mHeader = Header.fromBytes(packageTable.mReader); return packageTable; } public Node get(String packageName) { return mNodeMap.get(packageName); mReader.position(mHeader.mNodeOffset); for (int i = 0; i < mHeader.mNumPackages; i++) { Node node = Node.fromBytes(mReader); if (Objects.equals(node.mPackageName, packageName)) { return node; } } throw new AconfigStorageException("get cannot find package: " + packageName); } public Header getHeader() { Loading tools/aconfig/aconfig_storage_file/tests/srcs/FlagValueListTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ public class FlagValueListTest { assertEquals(expected.length, flagValueList.size()); for (int i = 0; i < flagValueList.size(); i++) { assertEquals(expected[i], flagValueList.get(i)); assertEquals(expected[i], flagValueList.getBoolean(i)); } } Loading @@ -68,10 +68,10 @@ public class FlagValueListTest { PackageTable.Node pNode = packageTable.get("com.android.aconfig.storage.test_1"); FlagTable.Node fNode = flagTable.get(pNode.getPackageId(), "enabled_rw"); assertTrue(flagValueList.get(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); assertTrue(flagValueList.getBoolean(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); pNode = packageTable.get("com.android.aconfig.storage.test_4"); fNode = flagTable.get(pNode.getPackageId(), "enabled_fixed_ro"); assertTrue(flagValueList.get(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); assertTrue(flagValueList.getBoolean(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); } } tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public class StorageInternalReader { if (index >= mFlagValueList.size()) { throw new AconfigStorageException("Fail to get boolean flag value"); } return mFlagValueList.get(index); return mFlagValueList.getBoolean(index); } private int getPackageBooleanStartOffset(String packageName) { Loading Loading
tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/ByteBufferReader.java +4 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,10 @@ public class ByteBufferReader { return new String(bytes, StandardCharsets.UTF_8); } public int readByte(int i) { return Byte.toUnsignedInt(mByteBuffer.get(i)); } public void position(int newPosition) { mByteBuffer.position(newPosition); } Loading
tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/FlagValueList.java +6 −18 Original line number Diff line number Diff line Loading @@ -17,33 +17,21 @@ package android.aconfig.storage; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; public class FlagValueList { private Header mHeader; private List<Boolean> mList; private int mSize; private ByteBufferReader mReader; public static FlagValueList fromBytes(ByteBuffer bytes) { FlagValueList flagValueList = new FlagValueList(); ByteBufferReader reader = new ByteBufferReader(bytes); Header header = Header.fromBytes(reader); flagValueList.mHeader = header; flagValueList.mList = new ArrayList(header.mNumFlags); reader.position(header.mBooleanValueOffset); for (int i = 0; i < header.mNumFlags; i++) { boolean val = reader.readByte() == 1; flagValueList.mList.add(val); } flagValueList.mSize = flagValueList.mList.size(); flagValueList.mReader = new ByteBufferReader(bytes); flagValueList.mHeader = Header.fromBytes(flagValueList.mReader); return flagValueList; } public boolean get(int index) { return mList.get(index); public boolean getBoolean(int index) { return mReader.readByte(mHeader.mBooleanValueOffset + index) == 1; } public Header getHeader() { Loading @@ -51,7 +39,7 @@ public class FlagValueList { } public int size() { return mSize; return mHeader.mNumFlags; } public static class Header { Loading
tools/aconfig/aconfig_storage_file/srcs/android/aconfig/storage/PackageTable.java +12 −13 Original line number Diff line number Diff line Loading @@ -17,31 +17,30 @@ package android.aconfig.storage; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.Objects; public class PackageTable { private Header mHeader; private Map<String, Node> mNodeMap; private ByteBufferReader mReader; public static PackageTable fromBytes(ByteBuffer bytes) { PackageTable packageTable = new PackageTable(); ByteBufferReader reader = new ByteBufferReader(bytes); Header header = Header.fromBytes(reader); packageTable.mHeader = header; packageTable.mNodeMap = new HashMap(TableUtils.getTableSize(header.mNumPackages)); reader.position(header.mNodeOffset); for (int i = 0; i < header.mNumPackages; i++) { Node node = Node.fromBytes(reader); packageTable.mNodeMap.put(node.mPackageName, node); } packageTable.mReader = new ByteBufferReader(bytes); packageTable.mHeader = Header.fromBytes(packageTable.mReader); return packageTable; } public Node get(String packageName) { return mNodeMap.get(packageName); mReader.position(mHeader.mNodeOffset); for (int i = 0; i < mHeader.mNumPackages; i++) { Node node = Node.fromBytes(mReader); if (Objects.equals(node.mPackageName, packageName)) { return node; } } throw new AconfigStorageException("get cannot find package: " + packageName); } public Header getHeader() { Loading
tools/aconfig/aconfig_storage_file/tests/srcs/FlagValueListTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ public class FlagValueListTest { assertEquals(expected.length, flagValueList.size()); for (int i = 0; i < flagValueList.size(); i++) { assertEquals(expected[i], flagValueList.get(i)); assertEquals(expected[i], flagValueList.getBoolean(i)); } } Loading @@ -68,10 +68,10 @@ public class FlagValueListTest { PackageTable.Node pNode = packageTable.get("com.android.aconfig.storage.test_1"); FlagTable.Node fNode = flagTable.get(pNode.getPackageId(), "enabled_rw"); assertTrue(flagValueList.get(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); assertTrue(flagValueList.getBoolean(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); pNode = packageTable.get("com.android.aconfig.storage.test_4"); fNode = flagTable.get(pNode.getPackageId(), "enabled_fixed_ro"); assertTrue(flagValueList.get(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); assertTrue(flagValueList.getBoolean(pNode.getBooleanStartIndex() + fNode.getFlagIndex())); } }
tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public class StorageInternalReader { if (index >= mFlagValueList.size()) { throw new AconfigStorageException("Fail to get boolean flag value"); } return mFlagValueList.get(index); return mFlagValueList.getBoolean(index); } private int getPackageBooleanStartOffset(String packageName) { Loading