package jpbx.core;
import javaforce.*;
import javaforce.voip.*;
/** Low-level and high-level APIs used by Plugins for processing SIP messages. */
public interface PBXAPI {
public void hookDialChain(DialChain chain);
public void unhookDialChain(DialChain chain);
public void schedule(Runnable plugin, int minutes);
public void unschedule(Runnable plugin);
public boolean isRegistered(String ext);
public boolean issue(CallDetailsServer cd, String header, boolean sdp, boolean src);
public boolean reply(CallDetailsServer cd, int code, String msg, String header, boolean sdp, boolean src);
public boolean transfer_src(CallDetailsPBX cd, String number);
public boolean transfer_dst(CallDetailsPBX cd, String number);
public Extension getExtension(String ext);
public String getlocalhost(CallDetailsPBX cd);
public int getlocalport();
public String[] getTrunks(String dialed, String ext, SQL sql);
public String resolve(String host); //resolve host to ip address
public CallDetailsServer createCallDetailsServer();
public void releaseCallDetails(CallDetails cd);
public String patternMatches(String pattern, String dialed);
public void log(CallDetailsPBX cd, String msg);
public void log(CallDetailsPBX cd, Exception e);
public DialChain getDialChain(int pid);
public void makePath(String path);
public String convertString(String str); //convert web string (%##) (+ -> ' ')
public String getCfg(String id);
public SIPServerInterface getSIPServerInterface();
public int onInvite(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onCancel(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onError(CallDetailsServer cd, SQL sql, int code, boolean src, int pid);
public void onBye(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onSuccess(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onRinging(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onTrying(CallDetailsServer cd, SQL sql, boolean src, int pid);
public void onFeature(CallDetailsServer cd, SQL sql, String cmd, String data, boolean src, int pid);
/** Connects src with dst end points.
* Creates RTP relays as needed.
*/
public void connect(CallDetailsPBX cd);
/** Disconnects src and dst end points.
* Removes RTP relays.
*/
public void disconnect(CallDetailsPBX cd);
/** Connects cd1.src with cd2.dst end points.
* It does this by swapping cd1.dst and cd2.dst.
*/
public void connect(CallDetailsPBX cd1, CallDetailsPBX cd2);
}