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.Connection; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Iterator; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.List; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleabstract class SipCallBase extends Call { 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected abstract void setState(State newState); 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public List<Connection> getConnections() { 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME should return Collections.unmodifiableList(); 3122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mConnections; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isMultiparty() { 3622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mConnections.size() > 1; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public String toString() { 4122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mState.toString() + ":" + super.toString(); 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void clearDisconnected() { 4522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville for (Iterator<Connection> it = mConnections.iterator(); it.hasNext(); ) { 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Connection c = it.next(); 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (c.getState() == State.DISCONNECTED) it.remove(); 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mConnections.isEmpty()) setState(State.IDLE); 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 53