Hooking into and providing custom behavior for the host discovery process #52
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I've added a pair of interfaces, ClientDiscoveryHandler and ServerDiscoveryHandler, that can be used to hook into the host discovery interaction and provide custom behavior. The ServerDiscoveryHandler allows a server to return additional information, such as the name of the currently running game or total players connected, in a custom response. The ClientDiscoveryHandler allows a client to process the custom packet returned by the ServerDiscoveryHandler.
Each interface has a nested static implementation that mirrors the existing behavior of Kryonet. These default implementations are assigned to the discoveryHandler member fields in the Server and Client class during construction, and a setter method has been provided to assign a new handler. The empty ByteBuffer that was used in the Server class to send the default empty response has been moved to the default implementation of the ServerDiscoveryHandler.
The ServerDiscoveryHandler interface has one method:
The ClientDiscoveryHandler interface has three methods:
All of the existing tests pass with the default handlers and I've extended the DiscoverHostTest to include a test for custom handlers. To the best of my knowledge, no existing behavior has been changed and this shouldn't break any code that uses Kryonet.