package rescuecore2.standard.messages;
import rescuecore2.worldmodel.EntityID;
import rescuecore2.messages.components.IntComponent;
import rescuecore2.messages.components.RawDataComponent;
import rescuecore2.messages.AbstractCommand;
import java.io.InputStream;
import java.io.IOException;
/**
An agent speak (channel) command.
*/
public class AKSpeak extends AbstractCommand {
private IntComponent channel;
private RawDataComponent data;
/**
An AKSpeak message that populates its data from a stream.
@param in The InputStream to read.
@throws IOException If there is a problem reading the stream.
*/
public AKSpeak(InputStream in) throws IOException {
this();
read(in);
}
/**
Construct a speak command.
@param agent The ID of the agent issuing the command.
@param time The time the command was issued.
@param channel The ID of the channel to speak on.
@param data The content of the message.
*/
public AKSpeak(EntityID agent, int time, int channel, byte[] data) {
this();
setAgentID(agent);
setTime(time);
this.channel.setValue(channel);
this.data.setData(data);
}
private AKSpeak() {
super(StandardMessageURN.AK_SPEAK);
channel = new IntComponent("Channel");
data = new RawDataComponent("Message");
addMessageComponent(channel);
addMessageComponent(data);
}
/**
Get the channel that was used.
@return The channel.
*/
public int getChannel() {
return channel.getValue();
}
/**
Get the content of the message.
@return The message content.
*/
public byte[] getContent() {
return data.getData();
}
}