Add service pipeline
This may not be possible, but it should be looked into. Having a class that contains a set of services that are used to process the data from a receive call. The pipeline could encapsulate a connection, or the connection could encapsulate the pipeline. If this does work, this could greatly improve the extensibility this library has.
This likely would work similarly to the reactor lib by Spring Framework:
ServicePipeline pipeline = new ServicePipeline()
.addByteParser(arr -> new String(arr))
.addStringProcessor(str -> /*process string*/)
.addObjectParser(str -> /*convert to object*/)
.constructPipeline(); // ?
Object obj = pipeline.process(bytes);
Using the add prefix signifies that they are user defined functions. The last method is in question. Either the functions just get added to the stack, or, we try and order them in case a user adds functions out of order. "Constructing" the pipeline means that reflection will need to be used. Also, it means that prior to even using it, it will need to be constructed. Pipelines could not be altered once constructed for performance purposes. Testing will need to be done.