package com.voxeo.moho.sample;
import java.util.ArrayList;
import java.util.List;
import javax.media.mscontrol.join.Joinable.Direction;
import com.voxeo.moho.Application;
import com.voxeo.moho.ApplicationContext;
import com.voxeo.moho.Call;
import com.voxeo.moho.IncomingCall;
import com.voxeo.moho.Joint;
import com.voxeo.moho.Participant.JoinType;
import com.voxeo.moho.State;
import com.voxeo.moho.Unjoint;
import com.voxeo.moho.event.HangupEvent;
public class JoinStrategy implements Application {
final List<Call> _calls = new ArrayList<Call>();
@Override
public void init(ApplicationContext ctx) {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
_calls.clear();
}
@State
public void handleInvite(final IncomingCall call) throws Exception {
call.addObserver(this);
call.answer();
synchronized (_calls) {
if (_calls.size() > 0) {
for (Call c : _calls) {
// Joint joint = call.join(c, JoinType.BRIDGE, Direction.DUPLEX);
Joint joint = call.join(c, JoinType.BRIDGE_SHARED, Direction.DUPLEX);
joint.get();
}
}
_calls.add(call);
}
}
@State
public void handleHangup(final HangupEvent event) throws Exception {
final Call call = event.getSource();
synchronized (_calls) {
_calls.remove(call);
if (_calls.size() > 0) {
for (Call c : _calls) {
Unjoint unjoint = call.unjoin(c);
unjoint.get();
}
}
}
}
}