public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { synchronized (encoder) { encoder.encode(session, message, out); } }
public void dispose(IoSession session) throws Exception { synchronized (encoder) { encoder.dispose(session); } } }
public void encode(final IoSession session, final Object message, final ProtocolEncoderOutput out) throws Exception { this.m_encoderLogger.debug("Encoding message..."); final Class messageClass = message.getClass(); synchronized (this.m_encoderFactories) { for (final DemuxableProtocolCodecFactory factory : this.m_encoderFactories) { final Class factoryClass = factory.getClassToEncode(); if (factoryClass.isAssignableFrom(messageClass)) { final ProtocolEncoder encoder = factory.newEncoder(); encoder.encode(session, message, out); // Got it, so just return. return; } } } m_encoderLogger.warn("Could not encode message: {}", message); m_encoderLogger.warn("Factories: {}", this.m_encoderFactories); } }
private void disposeEncoder(IoSession session) { ProtocolEncoder encoder = (ProtocolEncoder) session .removeAttribute(ENCODER); if (encoder == null) { return; } try { encoder.dispose(session); } catch (Throwable t) { SessionLog.warn(session, "Failed to dispose: " + encoder.getClass().getName() + " (" + encoder + ')'); } }
@Override public void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { Object message = writeRequest.getMessage(); if (message instanceof ByteBuffer) { nextFilter.filterWrite(session, writeRequest); return; } ProtocolEncoder encoder = getEncoder(session); ProtocolEncoderOutputImpl encoderOut = getEncoderOut(session, nextFilter, writeRequest); try { encoder.encode(session, message, encoderOut); encoderOut.flush(); nextFilter.filterWrite(session, new WriteRequest( new MessageByteBuffer(writeRequest.getMessage()), writeRequest.getFuture(), writeRequest.getDestination())); } catch (Throwable t) { ProtocolEncoderException pee; if (t instanceof ProtocolEncoderException) { pee = (ProtocolEncoderException) t; } else { pee = new ProtocolEncoderException(t); } throw pee; } }