/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.client.threetier.platypus;
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.ProtocolEncoderAdapter;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
/**
*
* @author mg
*/
public class RequestEncoder extends ProtocolEncoderAdapter {
@Override
public void encode(IoSession is, Object o, ProtocolEncoderOutput peo) throws Exception {
assert o instanceof RequestEnvelope;
RequestEnvelope env = (RequestEnvelope) o;
ByteArrayOutputStream bufOutStream = new ByteArrayOutputStream();
ProtoWriter writer = new ProtoWriter(bufOutStream);
if (env.ticket != null) {
writer.put(CoreTags.TAG_SESSION_TICKET, env.ticket);
}
if (env.userName != null) {
writer.put(CoreTags.TAG_USER_NAME, env.userName);
writer.put(CoreTags.TAG_PASSWORD, env.password != null ? env.password : "");
}
PlatypusRequestWriter.write(env.request, writer);
writer.flush();
peo.write(IoBuffer.wrap(bufOutStream.toByteArray()));
}
}