package com.github.shansun.sparrow.actor.internal;
import java.util.List;
import com.github.shansun.sparrow.actor.api.Actor;
import com.github.shansun.sparrow.actor.api.Message;
/**
* 消息体包装
*
* @author: lanbo <br>
* @version: 1.0 <br>
* @date: 2012-7-20
*/
public class MessageWrapper implements Message {
/**
* 消息内容
*/
private Message message;
/**
* 消息源
*/
private String sourceName;
/**
* 消息目标
*/
private String targetName;
/**
* 消息目标列表
*/
private List<String> targets;
/**
* 执行方式:
*/
private SpreadMode mode;
/**
* 传播方式
*
* @author: lanbo <br>
* @version: 1.0 <br>
* @date: 2012-7-21
*/
public static enum SpreadMode {
PEER_2_PEER, // 点对点发射
PEER_2_MULTI, // 点对多点
BROAD_CAST, // 广播
}
@Override
public String getSubject() {
return message.getSubject();
}
@Override
public Object getData() {
return message.getData();
}
public Actor getSource() {
return message.getSource();
}
public String getSourceName() {
return sourceName;
}
public void setSourceName(String sourceName) {
this.sourceName = sourceName;
}
public String getTargetName() {
return targetName;
}
public void setTargetName(String targetName) {
this.targetName = targetName;
}
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
public SpreadMode getMode() {
return mode;
}
public void setMode(SpreadMode mode) {
this.mode = mode;
}
public List<String> getTargets() {
return targets;
}
public void setTargets(List<String> targets) {
this.targets = targets;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((message == null) ? 0 : message.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MessageWrapper other = (MessageWrapper) obj;
if (message == null) {
if (other.message != null)
return false;
} else if (!message.equals(other.message))
return false;
return true;
}
}