cindy源码阅读(3)encode和decode

先来看看类图:



可以看到解码和编码是对应的。解码导入实现了PacketDecoder ,编码都实现了PacketEncoder。这个和我上一篇文章说的传输的基础是packet是对应的。
编码分别是转换成Buffer,byte[],ByteBuffer,对象,Packet。解码也有对应的解码。注意这里的buffer是cindy自己定义的buffer。
当然这些编码和解码为了扩展,还有chain类。PacketEncoderChain,PacketDecoderChain。

时间的过程中很少上面这些。cindy的举例hello worl用到了SerialEncoder。这个是对象的。但是这个对象没有确定具体的类,我们只能使用object的东西。
实际中我们的编码和解码一般是写在model的类中,更类似这样的:

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中,几个字节几个字节那样解码出对象的。

猜你喜欢

转载自huangyunbin.iteye.com/blog/1866330