/** * Writes an the {@link Events#DISCONNECT} to the client, flushes all the pending writes and * closes the channel. */ @Override public void close() { LOG.debug("Going to close tcp connection in class: {}", this.getClass().getName()); Event event = Events.event(null, Events.DISCONNECT); if (channel.isActive()) { channel.write(event).addListener(ChannelFutureListener.CLOSE); } else { channel.close(); LOG.trace("Unable to write the Event {} with type {} to socket", event, event.getType()); } }
@Test public void verifyAMF3BinaryEncodingAndDecoding() throws InterruptedException { EmbeddedChannel outChannel = new EmbeddedChannel( amf3Protocol.getLengthFieldPrepender(), amf3Protocol.getJavaObjectToAMF3Encoder()); EmbeddedChannel inChannel = new EmbeddedChannel(frameDecoder, amf3Protocol.createAMF3ToJavaObjectDecoder()); Event event = Events.event(playerStats, Events.SESSION_MESSAGE); outChannel.writeOutbound(event); assertTrue(outChannel.finish()); ByteBuf buffer = (ByteBuf) outChannel.readOutbound(); assertNotNull(buffer); inChannel.writeInbound(buffer); // assertTrue(inChannel.finish()); // Event decoded = (Event)inChannel.readInbound(); // assertTrue(decoded.getType() == Events.SESSION_MESSAGE); // PlayerStats playerStats = (PlayerStats) decoded.getSource(); // assertEquals(playerStats, this.playerStats); }