private static void addSessionHandler(final SessionState sessionState, final ChannelHandlerContext ctx) { ctx.pipeline().addLast(new SessionHandler(sessionState)); }
private void handleSession(final ChannelHandlerContext ctx) throws Exception { switch (sessionState.getState()) { case CONNECTING: sessionConnecting(ctx); break; case OPEN: sessionOpen(ctx); break; case INTERRUPTED: sessionInterrupted(ctx); break; case CLOSED: sessionClosed(ctx); break; } }
private void sessionInterrupted(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 1002, "Connection interrupted"); }
@Override public void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception { if (msg instanceof HttpRequest) { if (logger.isDebugEnabled()) { logger.debug("Handle session : {}", sessionState); } ReferenceCountUtil.release(msg); handleSession(ctx); } else if (msg instanceof String) { handleMessage((String) msg); } else { ctx.fireChannelRead(ReferenceCountUtil.retain(msg)); } }
private void sessionConnecting(final ChannelHandlerContext ctx) { logger.debug("State.CONNECTING sending open frame"); writeOpenFrame(ctx); sessionState.onConnect(ctx, new DefaultSockJsSessionContext()); }
@Override public void userEventTriggered(final ChannelHandlerContext ctx, final Object event) throws Exception { if (event == Event.CLOSE_SESSION) { sessionState.onClose(); sessionState.onSockJSServerInitiatedClose(); } else if (event == Event.HANDLE_SESSION) { handleSession(ctx); } }
@Override public void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception { if (msg instanceof HttpRequest) { if (logger.isDebugEnabled()) { logger.debug("Handle session : {}", sessionState); } ReferenceCountUtil.release(msg); handleSession(ctx); } else if (msg instanceof String) { handleMessage((String) msg); } else { ctx.fireChannelRead(ReferenceCountUtil.retain(msg)); } }
private void sessionConnecting(final ChannelHandlerContext ctx) { logger.debug("State.CONNECTING sending open frame"); writeOpenFrame(ctx); sessionState.onConnect(ctx, new DefaultSockJsSessionContext()); }
@Override public void userEventTriggered(final ChannelHandlerContext ctx, final Object event) throws Exception { if (event == Event.CLOSE_SESSION) { sessionState.onClose(); sessionState.onSockJSServerInitiatedClose(); } else if (event == Event.HANDLE_SESSION) { handleSession(ctx); } }
private void handleSession(final ChannelHandlerContext ctx) throws Exception { switch (sessionState.getState()) { case CONNECTING: sessionConnecting(ctx); break; case OPEN: sessionOpen(ctx); break; case INTERRUPTED: sessionInterrupted(ctx); break; case CLOSED: sessionClosed(ctx); break; } }
private void sessionInterrupted(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 1002, "Connection interrupted"); }
private static void addSessionHandler(final SessionState sessionState, final ChannelHandlerContext ctx) { ctx.pipeline().addLast(new SessionHandler(sessionState)); }
private void sessionClosed(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 3000, "Go away!"); sessionState.onClose(); }
private void sessionClosed(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 3000, "Go away!"); sessionState.onClose(); }
private void sessionOpen(ChannelHandlerContext ctx) { if (sessionState.isInUse()) { if (logger.isDebugEnabled()) { logger.debug("Another connection still in open for {}", sessionState); } writeCloseFrame(ctx, 2010, "Another connection still open"); sessionState.setState(State.INTERRUPTED); } else { sessionState.onOpen(ctx); } }
private void sessionOpen(ChannelHandlerContext ctx) { if (sessionState.isInUse()) { if (logger.isDebugEnabled()) { logger.debug("Another connection still in open for {}", sessionState); } writeCloseFrame(ctx, 2010, "Another connection still open"); sessionState.setState(State.INTERRUPTED); } else { sessionState.onOpen(ctx); } }