package javaforce.voip;
/** SIP UDP Transport
*
* @author pquiring
*
* Created Jan 30, 2014
*/
import java.net.*;
import javaforce.*;
public class SIPUDPTransport implements SIPTransport {
private DatagramSocket ds;
private boolean active = false;
public String getName() { return "UDP"; }
public boolean open(int localport) {
try {
ds = new DatagramSocket(localport);
active = true;
} catch (Exception e) {
JFLog.log(e);
return false;
}
return true;
}
public boolean close() {
active = false;
if (ds != null) {
ds.close();
ds = null;
}
return true;
}
public boolean send(byte[] data, int off, int len, InetAddress host, int port) {
try {
DatagramPacket dp = new DatagramPacket(data, off, len, host, port);
ds.send(dp);
} catch (Exception e) {
JFLog.log(e);
return false;
}
return true;
}
public boolean receive(SIP.Packet packet) {
try {
DatagramPacket dp = new DatagramPacket(packet.data, packet.data.length);
ds.receive(dp);
packet.length = dp.getLength();
packet.host = dp.getAddress().getHostAddress();
packet.port = dp.getPort();
} catch (Exception e) {
if (active) JFLog.log(e);
return false;
}
return true;
}
}