@Override
public UpdateMessage decode(ByteBuf buffer, RequestBaseMessage requestBaseMessage) throws
InvalidNamespaceException, InvalidBsonException {
try {
buffer.skipBytes(4);
String fullCollectionName = stringReader.readCString(buffer, true);
int flags = buffer.readInt();
BsonDocument selector = docReader.readDocument(HEAP, buffer);
BsonDocument update = docReader.readDocument(HEAP, buffer);
return new UpdateMessage(
requestBaseMessage,
EmptyBsonContext.getInstance(),
getDatabase(fullCollectionName).intern(),
getCollection(fullCollectionName).intern(),
selector,
update,
EnumInt32FlagsUtil.isActive(Flag.UPSERT, flags),
EnumInt32FlagsUtil.isActive(Flag.MULTI_UPDATE, flags)
);
} catch (NettyBsonReaderException ex) {
throw new InvalidBsonException(ex);
}
}