package com.cwa.minaserver.io;
import com.cwa.gamecore.io.AbstractGameOutput;
import com.cwa.gamecore.message.GameMessage;
import org.apache.mina.core.buffer.IoBuffer;
/**
* Mina版GameOutput。内部包装Mina的IoBuffer。
*/
public class MinaGameOutput extends AbstractGameOutput {
private IoBuffer out;
public MinaGameOutput(IoBuffer out) {
this.out = out;
}
public IoBuffer getIoBuffer() {
return out;
}
@Override
public void put(byte b) {
out.put(b);
}
@Override
public void putShort(short s) {
out.putShort(s);
}
@Override
public void putInt(int i) {
out.putInt(i);
}
@Override
public void putLong(long l) {
out.putLong(l);
}
@Override
public void putBoolean(boolean b) {
out.put(b ? (byte)1 : (byte)0);
}
@Override
public void putString(String s) {
if (s == null || s.length() == 0) {
out.putShort((short) 0);
return;
}
try {
byte[] b = s.getBytes(GameMessage.DEFAULT_CHARSET);
out.putShort((short) b.length);
out.put(b);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void putBytes(byte[] bytes) {
out.putShort((short) bytes.length);
out.put(bytes);
}
@Override
public void putRawBytes(byte[] bytes) {
out.put(bytes);
}
@Override
public void putChar(char arg0) {
out.putChar(arg0);
}
@Override
public void putDouble(double arg0) {
out.putDouble(arg0);
}
@Override
public void putFloat(float arg0) {
out.putFloat(arg0);
}
}