package io.craft.atom.protocol.rpc.model;
import java.io.Serializable;
import java.net.InetSocketAddress;
import java.util.Map;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* RPC messages use generic message format for transferring data.
* <pre>
* rpc-message = rpc-header + [ rpc-body ]
* </pre>
*
* @author mindwind
* @version 1.0, Jul 17, 2014
*/
@ToString
@EqualsAndHashCode(of = { "header", "body" })
public class RpcMessage implements Serializable {
private static final long serialVersionUID = 5138100956693144357L;
@Getter @Setter private RpcHeader header;
@Getter @Setter private RpcBody body ;
// ~ ---------------------------------------------------------------------------------------------------------
public boolean isOneway() {
return header.isOw();
}
public void setOneway(boolean oneway) {
if (oneway) { header.setOw(); }
}
public boolean isResponse() {
return header.isRp();
}
public void setResponse(boolean response) {
if (response) { header.setRp(); }
}
public boolean isHeartbeat() {
return header.isHb();
}
public void setHeartbeat(boolean heartbeat) {
if (heartbeat) { header.setHb(); }
}
public long getId() {
return header.getId();
}
public void setId(long id) {
header.setId(id);
}
public Exception getException() {
return body.getException();
}
public void setException(Exception e) {
body.setException(e);
}
public int getRpcTimeoutInMillis() {
return body.getRpcOption().getRpcTimeoutInMillis();
}
public void setRpcTimeoutInMillis(int rpcTimeoutInMillis) {
body.getRpcOption().setRpcTimeoutInMillis(rpcTimeoutInMillis);
}
public void setServerAddress(InetSocketAddress serverAddress) {
body.getRpcOption().setServerAddress(serverAddress);
}
public InetSocketAddress getServerAddress() {
return body.getRpcOption().getServerAddress();
}
public void setClientAddress(InetSocketAddress clientAddress) {
body.getRpcOption().setClientAddress(clientAddress);
}
public InetSocketAddress getClientAddress() {
return body.getRpcOption().getClientAddress();
}
public Object getReturnObject() {
return body.getReturnObject();
}
public void setReturnObject(Object returnObject) {
body.setReturnObject(returnObject);
}
public void setAttachments(Map<String, String> attachments) {
body.setAttachments(attachments);
}
public Map<String, String> getAttachments() {
return body.getAttachments();
}
public void setRpcId(String rpcId) {
body.setRpcId(rpcId);
}
public String getRpcId() {
return body.getRpcId();
}
}