先来看看类图:
[img]http://dl.iteye.com/upload/attachment/0084/2384/6a00acb6-bee7-35c0-b6b0-845863d91343.png[/img]
[size=medium]可以看到解码和编码是对应的。解码导入实现了PacketDecoder ,编码都实现了PacketEncoder。这个和我上一篇文章说的传输的基础是packet是对应的。
编码分别是转换成Buffer,byte[],ByteBuffer,对象,Packet。解码也有对应的解码。注意这里的buffer是cindy自己定义的buffer。
当然这些编码和解码为了扩展,还有chain类。PacketEncoderChain,PacketDecoderChain。
时间的过程中很少上面这些。cindy的举例hello worl用到了SerialEncoder。这个是对象的。但是这个对象没有确定具体的类,我们只能使用object的东西。
实际中我们的编码和解码一般是写在model的类中,更类似这样的:[/size]
也就是说,我们时间传输的是个pocket,pocket包含Buffer,我们是从这个buffer中,几个字节几个字节那样解码出对象的。
[img]http://dl.iteye.com/upload/attachment/0084/2384/6a00acb6-bee7-35c0-b6b0-845863d91343.png[/img]
[size=medium]可以看到解码和编码是对应的。解码导入实现了PacketDecoder ,编码都实现了PacketEncoder。这个和我上一篇文章说的传输的基础是packet是对应的。
编码分别是转换成Buffer,byte[],ByteBuffer,对象,Packet。解码也有对应的解码。注意这里的buffer是cindy自己定义的buffer。
当然这些编码和解码为了扩展,还有chain类。PacketEncoderChain,PacketDecoderChain。
时间的过程中很少上面这些。cindy的举例hello worl用到了SerialEncoder。这个是对象的。但是这个对象没有确定具体的类,我们只能使用object的东西。
实际中我们的编码和解码一般是写在model的类中,更类似这样的:[/size]
public class Model{
private short userLiveId;
public short getUserLiveId() {
return userLiveId;
}
public void setUserLiveId(short userLiveId) {
this.userLiveId = userLiveId;
}
protected void encode(ByteBuffer buffer) {
buffer.putShort(userLiveId);
}
protected void decode(ByteBuffer buffer) throws Exception {
userLiveId = buffer.getShort();
}
也就是说,我们时间传输的是个pocket,pocket包含Buffer,我们是从这个buffer中,几个字节几个字节那样解码出对象的。