/** * Provides Client and Server Session handling * <br> * When using {@link ChannelPipelineFactory} netty creates a pipeline per connection * With sessions we need a pipeline per session. Thus a pipeline may survive multiple connect/disconnect cycles. * Sessions thus allows the server to maintain its state in-between disconnect/connect cycles of the client * Currently only in-memory sessions are implemented. * Therefore when the server is stopped all sessions are lost and reconnecting clients will have to * adjust accordingly. * * To allow pipeline survival {@link MixinPipeline} is used. * On creation of a new session a new {@link MixinPipeline} is created, added to the current pipeline and associated with the session * On reconnect, once the session has been identified, the associated {@link MixinPipeline} is added to the * current pipeline. * * TODO * persistent sessions -> handler/pipeline api will have to be extended for persistence * distributed sessions using jgroups * session timeout -> handlers/pipeline api will have to be extended for cleanup */ package org.rzo.netty.ahessian.session;