/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.server.mina.platypus;
import com.eas.client.threetier.Response;
import com.eas.client.threetier.platypus.PlatypusResponseWriter;
import com.eas.proto.CoreTags;
import com.eas.proto.ProtoWriter;
import java.io.ByteArrayOutputStream;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
/**
*
* @author pk, mg refactoring
*/
public class ResponseEncoder implements ProtocolEncoder {
public ResponseEncoder() {
super();
}
@Override
public void encode(IoSession aSession, Object o, ProtocolEncoderOutput output) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
ProtoWriter writer = new ProtoWriter(outStream);
String ticket = (String)aSession.getAttribute(PlatypusRequestsHandler.SESSION_ID);
if (ticket != null) {
writer.put(CoreTags.TAG_SESSION_TICKET, ticket);
}
PlatypusResponseWriter.write((Response) o, writer);
writer.flush();
output.write(IoBuffer.wrap(outStream.toByteArray()));
}
@Override
public void dispose(IoSession aSession) throws Exception {
//nothing to dispose
}
}