/**
*
*/
package video.lib;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
import org.apache.mina.filter.codec.demux.MessageEncoder;
/**
* Encode a RTSP message into a buffer for sending.
*/
public class RtspEncoder implements MessageEncoder<Object> {
private final CharsetEncoder encoder;
public RtspEncoder(Charset charset) {
encoder = charset.newEncoder();
}
@Override
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
String strVal;
switch (((RtspMessage) message).getType()) {
case REQUEST:
strVal = ((RtspRequest) message).toString();
break;
case RESPONSE:
strVal = ((RtspResponse) message).toString();
break;
default:
strVal = "";
}
IoBuffer buf = IoBuffer.allocate(Constants.BUFFER_SIZE).setAutoExpand(true);
buf.putString(strVal, encoder);
buf.flip();
out.write(buf);
}
}