package io.muoncore.transport.sharedsocket.server; import io.muoncore.channel.ChannelConnection; import io.muoncore.channel.Channels; import io.muoncore.channel.impl.ZipChannel; import io.muoncore.codec.Codecs; import io.muoncore.message.MuonInboundMessage; import io.muoncore.message.MuonOutboundMessage; import io.muoncore.protocol.ServerStacks; import io.muoncore.transport.sharedsocket.client.SharedSocketRouter; public class SharedChannelServerStacks implements ServerStacks { private ServerStacks wrappedStacks; private Codecs codecs; public SharedChannelServerStacks(ServerStacks wrappedStacks, Codecs codecs) { this.wrappedStacks = wrappedStacks; this.codecs = codecs; } @Override public ChannelConnection<MuonInboundMessage, MuonOutboundMessage> openServerChannel(String protocol) { ChannelConnection<MuonInboundMessage, MuonOutboundMessage> channelConnection; if (protocol.equals(SharedSocketRouter.PROTOCOL)) { channelConnection = new SharedSocketServerChannel(wrappedStacks, codecs); } else { channelConnection = wrappedStacks.openServerChannel(protocol); } ZipChannel zipChannel = Channels.zipChannel("server"); Channels.connect(zipChannel.left(), channelConnection); return zipChannel.right(); } }