package org.zbus.client.rpc;
import org.zbus.common.remoting.Message;
/**
* RPC请求应答编解码
* 并提供强类型转换
* 典型实现: JsonCodec
*
* @author 洪磊明(rushmore)
*
*/
public interface Codec {
Message encodeRequest(Request request);
Message encodeResponse(Response response);
Request decodeRequest(Message msg);
Response decodeResponse(Message msg);
/**
* 强制转换类型,比如JsonCodec中将JSON格式的对象转换为强类型
* 这个过程在方法本地调用之前组装参数(强类型匹配)的时候使用
*
* @param param 弱类型(JSON/XML化的内存对象),简单类型也支持
* @param targetType 目标类型
* @return
* @throws ClassNotFoundException
*/
Object normalize(Object param, Class<?> targetType) throws ClassNotFoundException;
}