/* * Copyright 2007 Sun Microsystems, Inc. * * This file is part of jVoiceBridge. * * jVoiceBridge is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation and distributed hereunder * to you. * * jVoiceBridge is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Sun designates this particular file as subject to the "Classpath" * exception as provided by Sun in the License file that accompanied this * code. */ package com.sun.voip.server; import org.jivesoftware.openfire.XMPPServer; import com.sun.voip.CallParticipant; import com.sun.voip.CallState; import com.sun.voip.MediaInfo; import java.io.IOException; import java.net.InetSocketAddress; import java.util.*; import org.dom4j.*; import org.xmpp.packet.*; import org.ifsoft.rayo.*; import org.xmpp.jnodes.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SpeakerCallAgent extends CallSetupAgent { private static final Logger Log = LoggerFactory.getLogger(SpeakerCallAgent.class); private CallParticipant cp; private MemberReceiver memberReceiver; private MemberSender memberSender; private MediaInfo mixerMediaPreference; public SpeakerCallAgent(CallHandler callHandler) { super(callHandler); cp = callHandler.getCallParticipant(); mixerMediaPreference = callHandler.getConferenceManager().getMediaInfo(); memberSender = callHandler.getMemberSender(); memberReceiver = callHandler.getMemberReceiver(); Log.info("SpeakerCallAgent init " + cp.getDisplayName() + " " + cp.getPhoneNumber() + " " + cp.isMuted()); } public void initiateCall() throws IOException { String domainName = XMPPServer.getInstance().getServerInfo().getXMPPDomain(); try { if ("CALL".equals(cp.getDisplayName()) && "Speaker".equals(cp.getProtocol())) // bridge from call to speaker { memberSender.setChannel(new SpeakerChannel(cp.getOtherCall().getMemberReceiver())); } setState(CallState.ANSWERED); setEndpointAddress(null, (byte)0, (byte)0, (byte)0); setState(CallState.ESTABLISHED); } catch (Exception e) { Log.error("Call " + cp + ": SpeakerCallAgent: initiateCall exception "); e.printStackTrace(); } } public String getSdp() { return null; } public void setRemoteMediaInfo(String sdp) { return; } }