setDataCommandInfo("SB-Tree bonsai get");
OBonsaiCollectionPointer collectionPointer = OCollectionNetworkSerializer.INSTANCE.readCollectionPointer(channel);
final byte[] keyStream = channel.readBytes();
final OSBTreeCollectionManager sbTreeCollectionManager = connection.database.getSbTreeCollectionManager();
final OSBTreeBonsai<OIdentifiable, Integer> tree = sbTreeCollectionManager.loadSBTree(collectionPointer);
try {
final OIdentifiable key = tree.getKeySerializer().deserialize(keyStream, 0);
Integer result = tree.get(key);
final OBinarySerializer<? super Integer> valueSerializer;
if (result == null) {
valueSerializer = ONullSerializer.INSTANCE;
} else {
valueSerializer = tree.getValueSerializer();
}
byte[] stream = new byte[OByteSerializer.BYTE_SIZE + valueSerializer.getObjectSize(result)];
OByteSerializer.INSTANCE.serialize(valueSerializer.getId(), stream, 0);
valueSerializer.serialize(result, stream, OByteSerializer.BYTE_SIZE);
beginResponse();
try {
sendOk(clientTxId);
channel.writeBytes(stream);
} finally {
endResponse();
}
} finally {
sbTreeCollectionManager.releaseSBTree(collectionPointer);
}
}