@Override public void send(String message) { final Channel channel = sessionState.getSendingContext().channel(); if (isWritable(channel)) { channel.writeAndFlush(new MessageFrame(message)); } else { sessionState.storeMessage(message); } }
@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 handleMessage(final String message) throws Exception { sessionState.onMessage(message); }
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); } }
@Override public void close() { sessionState.onClose(); final Channel channel = sessionState.getSendingContext().channel(); if (isWritable(channel)) { final CloseFrame closeFrame = new CloseFrame(3000, "Go away!"); if (logger.isDebugEnabled()) { logger.debug("Writing {}", closeFrame); } channel.writeAndFlush(closeFrame).addListener(ChannelFutureListener.CLOSE); } }
@Override public void channelInactive(final ChannelHandlerContext ctx) throws Exception { sessionState.resetInuse(); ctx.fireChannelInactive(); }
private void sessionConnecting(final ChannelHandlerContext ctx) { logger.debug("State.CONNECTING sending open frame"); writeOpenFrame(ctx); sessionState.onConnect(ctx, new DefaultSockJsSessionContext()); }
@Override public ChannelHandlerContext getContext() { return sessionState.getSendingContext(); } }
private void sessionClosed(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 3000, "Go away!"); sessionState.onClose(); }
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 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); } }
@Override public void close() { sessionState.onClose(); final Channel channel = sessionState.getSendingContext().channel(); if (isWritable(channel)) { final CloseFrame closeFrame = new CloseFrame(3000, "Go away!"); if (logger.isDebugEnabled()) { logger.debug("Writing {}", closeFrame); } channel.writeAndFlush(closeFrame).addListener(ChannelFutureListener.CLOSE); } }
@Override public void channelInactive(final ChannelHandlerContext ctx) throws Exception { sessionState.resetInuse(); ctx.fireChannelInactive(); }
private void sessionConnecting(final ChannelHandlerContext ctx) { logger.debug("State.CONNECTING sending open frame"); writeOpenFrame(ctx); sessionState.onConnect(ctx, new DefaultSockJsSessionContext()); }
@Override public ChannelHandlerContext getContext() { return sessionState.getSendingContext(); } }
private void sessionClosed(ChannelHandlerContext ctx) { writeCloseFrame(ctx, 3000, "Go away!"); sessionState.onClose(); }
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; } }
@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 send(String message) { final Channel channel = sessionState.getSendingContext().channel(); if (isWritable(channel)) { channel.writeAndFlush(new MessageFrame(message)); } else { sessionState.storeMessage(message); } }
private void handleMessage(final String message) throws Exception { sessionState.onMessage(message); }