rpc接口设计:
public static Object call(int dstId, MsgRpc request);
public static void cast(int dstId, MsgRpc request, Response response)
功能要点说明:
1. call接口,同步调用。cast接口, 异步调用。
2. response标识此次调用方需要临时存储的一些逻辑信息,待返回验证或使用。
3. response类会有一个超时机制(有个管理类),过期清除。
4. request是抽象的数据通信信息。
public abstract class Response {
private int seq;
private long expire;
private Lock lock;
private Condition finish;
private MsgRpc event;
public Object goCall(){
try {
lock.lock();
finish.await(RPC_TIMEOUT, TimeUnit.MILLISECONDS);
if(event == null) {
return null;
}
return event;
}
catch (Exception e){
}
finally {
lock.unlock();
}
return null;
}
public void goNotify(){
try {
lock.lock();
finish.signal();
}
catch (Exception e){
}
finally {
lock.unlock();
}
}
}