package iax.protocol.peer.command.send;
import iax.protocol.frame.Frame;
import iax.protocol.frame.FullFrame;
import iax.protocol.frame.MiniFrame;
import iax.protocol.frame.ProtocolControlFrame;
import iax.protocol.peer.Peer;
/**
* Sends an inval
*/
public class Inval implements PeerCommandSend {
private Peer peer;
private Frame frame;
/**
* Constructor
* @param peer peer for sending the frame
* @param frame the frame that needs an inval
*/
public Inval(Peer peer, Frame frame) {
this.peer = peer;
this.frame = frame;
}
public void run() {
if (frame.getFull()) {
FullFrame fullFrame = (FullFrame)frame;
peer.sendFrame(new ProtocolControlFrame(fullFrame.getDestCallNo(),
false,
fullFrame.getSrcCallNo(),
fullFrame.getTimestamp(),
fullFrame.getIseqno(),
fullFrame.getOseqno(),
false,
ProtocolControlFrame.INVAL_SC));
} else {
MiniFrame miniFrame = (MiniFrame)frame;
peer.sendFrame(new ProtocolControlFrame(0,
false,
miniFrame.getSrcCallNo(),
miniFrame.getTimestamp(),
0,
0,
false,
ProtocolControlFrame.INVAL_SC));
}
}
}