use of com.alipay.remoting.exception.SerializationException in project sofa-rpc by sofastack.
the class BoltClientTransport method convertToRpcException.
/**
* 转换调用出现的异常为RPC异常
*
* @param e 异常
* @return RPC异常
*/
protected SofaRpcException convertToRpcException(Exception e) {
SofaRpcException exception;
if (e instanceof SofaRpcException) {
exception = (SofaRpcException) e;
} else // 超时
if (e instanceof InvokeTimeoutException) {
exception = new SofaTimeOutException(e);
} else // 服务器忙
if (e instanceof InvokeServerBusyException) {
exception = new SofaRpcException(RpcErrorType.SERVER_BUSY, e);
} else // 序列化
if (e instanceof SerializationException) {
boolean isServer = ((SerializationException) e).isServerSide();
exception = isServer ? new SofaRpcException(RpcErrorType.SERVER_SERIALIZE, e) : new SofaRpcException(RpcErrorType.CLIENT_SERIALIZE, e);
} else // 反序列化
if (e instanceof DeserializationException) {
boolean isServer = ((DeserializationException) e).isServerSide();
exception = isServer ? new SofaRpcException(RpcErrorType.SERVER_DESERIALIZE, e) : new SofaRpcException(RpcErrorType.CLIENT_DESERIALIZE, e);
} else // 长连接断连
if (e instanceof ConnectionClosedException) {
exception = new SofaRpcException(RpcErrorType.CLIENT_NETWORK, e);
} else // 客户端发送失败
if (e instanceof InvokeSendFailedException) {
exception = new SofaRpcException(RpcErrorType.CLIENT_NETWORK, e);
} else // 服务端未知异常
if (e instanceof InvokeServerException) {
exception = new SofaRpcException(RpcErrorType.SERVER_UNDECLARED_ERROR, e.getCause());
} else // 客户端未知
{
exception = new SofaRpcException(RpcErrorType.CLIENT_UNDECLARED_ERROR, e);
}
return exception;
}
use of com.alipay.remoting.exception.SerializationException in project sofa-rpc by sofastack.
the class SimpleMapSerializer method encode.
/**
* 简单 map 的序列化过程, 用来序列化 bolt 的 header
*
* @param map bolt header
* @return 序列化后的 byte 数组
* @throws SerializationException SerializationException
*/
public byte[] encode(Map<String, String> map) throws SerializationException {
if (map == null || map.isEmpty()) {
return null;
}
UnsafeByteArrayOutputStream out = new UnsafeByteArrayOutputStream(64);
try {
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
/**
* 排除不写null作为key
*/
if (key != null && value != null) {
writeString(out, key);
writeString(out, value);
}
}
return out.toByteArray();
} catch (IOException ex) {
throw new SerializationException(ex.getMessage(), ex);
}
}
Aggregations