package com.voxeo.moho.remote.sample;
import java.net.URI;
import javax.media.mscontrol.join.Joinable.Direction;
import com.voxeo.moho.Call;
import com.voxeo.moho.CallableEndpoint;
import com.voxeo.moho.IncomingCall;
import com.voxeo.moho.Participant.JoinType;
import com.voxeo.moho.State;
import com.voxeo.moho.event.AnsweredEvent;
import com.voxeo.moho.event.CallCompleteEvent;
import com.voxeo.moho.event.JoinCompleteEvent;
import com.voxeo.moho.event.Observer;
import com.voxeo.moho.remote.MohoRemote;
import com.voxeo.moho.remote.impl.MohoRemoteImpl;
public class JoinSample implements Observer {
static Observer observer = null;
static Call outboundCall;
/**
* @param args
*/
public static void main(String[] args) {
MohoRemote mohoRemote = new MohoRemoteImpl();
observer = new JoinSample();
mohoRemote.addObserver(observer);
mohoRemote.connect(new SimpleAuthenticateCallbackImpl("usera", "1", "", "voxeo"), "localhost", "localhost");
CallableEndpoint endpoint = (CallableEndpoint) mohoRemote
.createEndpoint(URI.create("sip:sipuserf@127.0.0.1:5678"));
outboundCall = endpoint.createCall("sip:mohosample@example.com");
outboundCall.addObserver(observer);
outboundCall.join();
try {
Thread.sleep(100 * 60 * 1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
@State
public void outboundAnswered(final AnsweredEvent<Call> event) {
event.getSource().output("Hello world");
}
@State
public void handleInvite(final IncomingCall call) {
call.answer();
call.addObserver(observer);
call.output("hello world");
call.join(outboundCall, JoinType.BRIDGE, Direction.DUPLEX);
}
@State
public void joinComplete(final JoinCompleteEvent event) {
System.out.print("Join complete:" + event.getSource() + ":" + event.getCause());
}
@State
public void CallComplete(final CallCompleteEvent event) {
System.out.print("Call complete:" + event.getSource() + ":" + event.getCause());
}
}