10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2010 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.sip; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Call; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CallStateException; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Connection; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Phone; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.sip.SipManager; 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Iterator; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.List; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleabstract class SipCallBase extends Call { 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected List<Connection> connections = new ArrayList<Connection>(); 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected abstract void setState(State newState); 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public List<Connection> getConnections() { 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME should return Collections.unmodifiableList(); 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return connections; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isMultiparty() { 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return connections.size() > 1; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state.toString() + ":" + super.toString(); 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void clearDisconnected() { 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (Iterator<Connection> it = connections.iterator(); it.hasNext(); ) { 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Connection c = it.next(); 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (c.getState() == State.DISCONNECTED) it.remove(); 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (connections.isEmpty()) setState(State.IDLE); 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 56