Skip to content

Initial work on making player data read/update asynchronous#62

Draft
MATRIX-feather wants to merge 6 commits into1.21.11/featurefrom
1.21.11/feature-async-storage
Draft

Initial work on making player data read/update asynchronous#62
MATRIX-feather wants to merge 6 commits into1.21.11/featurefrom
1.21.11/feature-async-storage

Conversation

@MATRIX-feather
Copy link
Member

This PR adds some initial work on making player data read/update asynchronous.

The instance network is not tested, and I don't know what will happen, as it's already 5 a.m. right now.

@MATRIX-feather MATRIX-feather changed the title Initial work on making storage functions almost fully async Initial work on making player data read/update asynchronous Dec 15, 2025
Comment on lines +303 to +314
var dataStore = morphManager.getDataStore();
requestedUUIDs.forEach(uuid ->
{
dataStore.getOrLoad(uuid).thenAccept(meta ->
{
var cmd = new MIS2CSyncMetaCommand();
cmd.appendMeta(new SocketPlayerMeta(Operation.ADD_IF_ABSENT, meta.getUnlockedDisguiseIdentifiers(), uuid));

logMasterInfo("Synced %s metadata(s) to socket '%s'".formatted(disguises.size(), socket.getRemoteSocketAddress()));
this.sendCommand(socket, cmd);
logMasterInfo("Synced metadata for %s to socket '%s'".formatted(uuid, socket.getRemoteSocketAddress()));
});
});
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should add some kind of batching here, so that we don't send them one by one

Comment on lines 55 to 64
bindingSlave.requestData(uuid).thenAccept(u ->
{
var data = nullablePlayerMeta(u);

return playerMeta.getUnlockedDisguises();
if (data != null)
future.complete(data);
else
future.completeExceptionally(new NullDependencyException("The future of the requested data has been finished, but we can't find a matching data in NetworkDataHolder!"));
});

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is kind of tricky, and I'm not sure if it's fine. Maybe requesting data should now be NetworkDataHolder's job?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant