15d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad/*
25d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Copyright (C) 2014 The Android Open Source Project
35d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
45d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Licensed under the Apache License, Version 2.0 (the "License");
55d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * you may not use this file except in compliance with the License.
65d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * You may obtain a copy of the License at
75d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
85d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *      http://www.apache.org/licenses/LICENSE-2.0
95d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Unless required by applicable law or agreed to in writing, software
115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * distributed under the License is distributed on an "AS IS" BASIS,
125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * See the License for the specific language governing permissions and
145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad R* limitations under the License.
155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad */
165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom;
185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.net.Uri;
206b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordonimport android.os.Bundle;
215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.Handler;
225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.Message;
235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.RemoteException;
245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
257c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordonimport com.android.internal.os.SomeArgs;
26ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnimport com.android.internal.telecom.IConnectionServiceAdapter;
27ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnimport com.android.internal.telecom.IVideoProvider;
28ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnimport com.android.internal.telecom.RemoteServiceCallback;
297c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon
307c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordonimport java.util.List;
317c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon
325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad/**
335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * A component that provides an RPC servant implementation of {@link IConnectionServiceAdapter},
345d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * posting incoming messages on the main thread on a client-supplied delegate object.
355d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
365d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * TODO: Generate this and similar classes using a compiler starting from AIDL interfaces.
375d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
385d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * @hide
395d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad */
405d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadfinal class ConnectionServiceAdapterServant {
416107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_HANDLE_CREATE_CONNECTION_COMPLETE = 1;
426107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_ACTIVE = 2;
436107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_RINGING = 3;
446107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_DIALING = 4;
456107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_DISCONNECTED = 5;
466107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_ON_HOLD = 6;
47100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private static final int MSG_SET_RINGBACK_REQUESTED = 7;
485c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    private static final int MSG_SET_CONNECTION_CAPABILITIES = 8;
496107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_IS_CONFERENCED = 9;
506107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_ADD_CONFERENCE_CALL = 10;
516107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_REMOVE_CALL = 11;
526107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_ON_POST_DIAL_WAIT = 12;
536107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 13;
546107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_VIDEO_STATE = 14;
556107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_VIDEO_CALL_PROVIDER = 15;
56100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private static final int MSG_SET_IS_VOIP_AUDIO_MODE = 16;
576107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_STATUS_HINTS = 17;
58100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee    private static final int MSG_SET_ADDRESS = 18;
596107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad    private static final int MSG_SET_CALLER_DISPLAY_NAME = 19;
6023dc241d5e4641ee2acd4b5f7865c66d9f58c9f1Evan Charlton    private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
614a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn    private static final int MSG_ADD_EXISTING_CONNECTION = 21;
6227d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen    private static final int MSG_ON_POST_DIAL_CHAR = 22;
6317455a3d39350a39eb995897929977d793358365Anthony Lee    private static final int MSG_SET_CONFERENCE_MERGE_FAILED = 23;
64dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn    private static final int MSG_PUT_EXTRAS = 24;
65dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn    private static final int MSG_REMOVE_EXTRAS = 25;
66dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn    private static final int MSG_ON_CONNECTION_EVENT = 26;
67720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    private static final int MSG_SET_CONNECTION_PROPERTIES = 27;
685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final IConnectionServiceAdapter mDelegate;
705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final Handler mHandler = new Handler() {
725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void handleMessage(Message msg) {
745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            try {
755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                internalHandleMessage(msg);
765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            } catch (RemoteException e) {
775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            }
785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        // Internal method defined to centralize handling of RemoteException
815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        private void internalHandleMessage(Message msg) throws RemoteException {
825d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            switch (msg.what) {
836107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad                case MSG_HANDLE_CREATE_CONNECTION_COMPLETE: {
845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
866107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad                        mDelegate.handleCreateConnectionComplete(
87b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                                (String) args.arg1,
88b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                                (ConnectionRequest) args.arg2,
89b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                                (ParcelableConnection) args.arg3);
905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
935d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_ACTIVE:
965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setActive((String) msg.obj);
975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_RINGING:
995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setRinging((String) msg.obj);
1005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_DIALING:
1025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setDialing((String) msg.obj);
1035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_DISCONNECTED: {
1055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1077f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee                        mDelegate.setDisconnected((String) args.arg1, (DisconnectCause) args.arg2);
1085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_ON_HOLD:
1145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setOnHold((String) msg.obj);
1155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
116100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                case MSG_SET_RINGBACK_REQUESTED:
117100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                    mDelegate.setRingbackRequested((String) msg.obj, msg.arg1 == 1);
1185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1195c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad                case MSG_SET_CONNECTION_CAPABILITIES:
1205c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad                    mDelegate.setConnectionCapabilities((String) msg.obj, msg.arg1);
1215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
122720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                case MSG_SET_CONNECTION_PROPERTIES:
123720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    mDelegate.setConnectionProperties((String) msg.obj, msg.arg1);
124720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    break;
1255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_IS_CONFERENCED: {
1265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setIsConferenced((String) args.arg1, (String) args.arg2);
1295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1315d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
134823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                case MSG_ADD_CONFERENCE_CALL: {
135823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                    SomeArgs args = (SomeArgs) msg.obj;
136823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                    try {
137823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                        mDelegate.addConferenceCall(
138823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                                (String) args.arg1, (ParcelableConference) args.arg2);
139823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                    } finally {
140823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                        args.recycle();
141823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                    }
1425d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
143823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                }
1445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_REMOVE_CALL:
1455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.removeCall((String) msg.obj);
1465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_ON_POST_DIAL_WAIT: {
1485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.onPostDialWait((String) args.arg1, (String) args.arg2);
1515d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1525d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1535d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1545d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1555d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
15627d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                case MSG_ON_POST_DIAL_CHAR: {
15727d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                    SomeArgs args = (SomeArgs) msg.obj;
15827d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                    try {
15927d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                        mDelegate.onPostDialChar((String) args.arg1, (char) args.argi1);
16027d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                    } finally {
16127d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                        args.recycle();
16227d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                    }
16327d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                    break;
16427d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen                }
1655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_QUERY_REMOTE_CALL_SERVICES:
1665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) msg.obj);
1675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_VIDEO_STATE:
1695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setVideoState((String) msg.obj, msg.arg1);
1705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_VIDEO_CALL_PROVIDER: {
1725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
174b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                        mDelegate.setVideoProvider((String) args.arg1,
175b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                                (IVideoProvider) args.arg2);
1765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
181100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                case MSG_SET_IS_VOIP_AUDIO_MODE:
182100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                    mDelegate.setIsVoipAudioMode((String) msg.obj, msg.arg1 == 1);
1835d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_STATUS_HINTS: {
1855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setStatusHints((String) args.arg1, (StatusHints) args.arg2);
1885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
193100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                case MSG_SET_ADDRESS: {
1945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
196100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee                        mDelegate.setAddress((String) args.arg1, (Uri) args.arg2, args.argi1);
1975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
2005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
2015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
2025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_CALLER_DISPLAY_NAME: {
2035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
2045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
2055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setCallerDisplayName(
2065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (String) args.arg1, (String) args.arg2, args.argi1);
2075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
2085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
2095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
2105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
2115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
2127c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                case MSG_SET_CONFERENCEABLE_CONNECTIONS: {
2137c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                    SomeArgs args = (SomeArgs) msg.obj;
2147c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                    try {
2157c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                        mDelegate.setConferenceableConnections(
2167c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                                (String) args.arg1, (List<String>) args.arg2);
2177c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                    } finally {
2187c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                        args.recycle();
2197c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                    }
2207c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                    break;
2217c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                }
2224a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                case MSG_ADD_EXISTING_CONNECTION: {
2234a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                    SomeArgs args = (SomeArgs) msg.obj;
2244a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                    try {
2254a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                        mDelegate.addExistingConnection(
2264a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                                (String) args.arg1, (ParcelableConnection) args.arg2);
2274a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                    } finally {
2284a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                        args.recycle();
2294a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                    }
2304a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                    break;
2314a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                }
23217455a3d39350a39eb995897929977d793358365Anthony Lee                case MSG_SET_CONFERENCE_MERGE_FAILED: {
23317455a3d39350a39eb995897929977d793358365Anthony Lee                    SomeArgs args = (SomeArgs) msg.obj;
23417455a3d39350a39eb995897929977d793358365Anthony Lee                    try {
23517455a3d39350a39eb995897929977d793358365Anthony Lee                        mDelegate.setConferenceMergeFailed((String) args.arg1);
23617455a3d39350a39eb995897929977d793358365Anthony Lee                    } finally {
23717455a3d39350a39eb995897929977d793358365Anthony Lee                        args.recycle();
23817455a3d39350a39eb995897929977d793358365Anthony Lee                    }
23917455a3d39350a39eb995897929977d793358365Anthony Lee                    break;
24017455a3d39350a39eb995897929977d793358365Anthony Lee                }
241dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                case MSG_PUT_EXTRAS: {
2426b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                    SomeArgs args = (SomeArgs) msg.obj;
2436b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                    try {
244dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                        mDelegate.putExtras((String) args.arg1, (Bundle) args.arg2);
245dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                    } finally {
246dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                        args.recycle();
247dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                    }
248dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                    break;
249dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                }
250dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                case MSG_REMOVE_EXTRAS: {
251dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                    SomeArgs args = (SomeArgs) msg.obj;
252dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                    try {
253dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn                        mDelegate.removeExtras((String) args.arg1, (List<String>) args.arg2);
2546b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                    } finally {
2556b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                        args.recycle();
2566b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                    }
25786c9fb41736f5848acf7baf71ebfe39df204ad4bTyler Gunn                    break;
2586b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon                }
259bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                case MSG_ON_CONNECTION_EVENT: {
260bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                    SomeArgs args = (SomeArgs) msg.obj;
261bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                    try {
262876dbfb4767da4a2ba5459d5b78fb6eb55e4516fTyler Gunn                        mDelegate.onConnectionEvent((String) args.arg1, (String) args.arg2,
263876dbfb4767da4a2ba5459d5b78fb6eb55e4516fTyler Gunn                                (Bundle) args.arg3);
264bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                    } finally {
265bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                        args.recycle();
266bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                    }
26786c9fb41736f5848acf7baf71ebfe39df204ad4bTyler Gunn                    break;
268bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn                }
2695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            }
2705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    };
2725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final IConnectionServiceAdapter mStub = new IConnectionServiceAdapter.Stub() {
2745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2756107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad        public void handleCreateConnectionComplete(
276b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                String id,
277b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                ConnectionRequest request,
278b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad                ParcelableConnection connection) {
2795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
280b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            args.arg1 = id;
281b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            args.arg2 = request;
282b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            args.arg3 = connection;
2836107bab041fb7d851fbf865b7310d294aae970c8Ihab Awad            mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_COMPLETE, args).sendToTarget();
2845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setActive(String connectionId) {
2885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_ACTIVE, connectionId).sendToTarget();
2895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setRinging(String connectionId) {
2935d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_RINGING, connectionId).sendToTarget();
2945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setDialing(String connectionId) {
2985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_DIALING, connectionId).sendToTarget();
2995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setDisconnected(
3037f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee                String connectionId, DisconnectCause disconnectCause) {
3045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3067f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee            args.arg2 = disconnectCause;
3075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
3085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setOnHold(String connectionId) {
3125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_ON_HOLD, connectionId).sendToTarget();
3135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
316100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        public void setRingbackRequested(String connectionId, boolean ringback) {
317100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            mHandler.obtainMessage(MSG_SET_RINGBACK_REQUESTED, ringback ? 1 : 0, 0, connectionId)
3185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    .sendToTarget();
3195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3225c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        public void setConnectionCapabilities(String connectionId, int connectionCapabilities) {
3235c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad            mHandler.obtainMessage(
3245c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad                    MSG_SET_CONNECTION_CAPABILITIES, connectionCapabilities, 0, connectionId)
3255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    .sendToTarget();
3265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
329720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        public void setConnectionProperties(String connectionId, int connectionProperties) {
330720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            mHandler.obtainMessage(
331720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    MSG_SET_CONNECTION_PROPERTIES, connectionProperties, 0, connectionId)
332720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    .sendToTarget();
333720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        }
334720c664401081ca00e56c7eef12641ae792da530Tyler Gunn
335720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        @Override
33617455a3d39350a39eb995897929977d793358365Anthony Lee        public void setConferenceMergeFailed(String callId) {
33717455a3d39350a39eb995897929977d793358365Anthony Lee            SomeArgs args = SomeArgs.obtain();
33817455a3d39350a39eb995897929977d793358365Anthony Lee            args.arg1 = callId;
33917455a3d39350a39eb995897929977d793358365Anthony Lee            mHandler.obtainMessage(MSG_SET_CONFERENCE_MERGE_FAILED, args).sendToTarget();
34017455a3d39350a39eb995897929977d793358365Anthony Lee        }
34117455a3d39350a39eb995897929977d793358365Anthony Lee
34217455a3d39350a39eb995897929977d793358365Anthony Lee        @Override
3435d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setIsConferenced(String callId, String conferenceCallId) {
3445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = callId;
3465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = conferenceCallId;
3475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
3485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
351823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        public void addConferenceCall(String callId, ParcelableConference parcelableConference) {
352823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            SomeArgs args = SomeArgs.obtain();
353823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            args.arg1 = callId;
354823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            args.arg2 = parcelableConference;
355823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, args).sendToTarget();
3565d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3575d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3585d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3595d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void removeCall(String connectionId) {
3605d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_REMOVE_CALL, connectionId).sendToTarget();
3615d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3625d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3635d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3645d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void onPostDialWait(String connectionId, String remainingDigits) {
3655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = remainingDigits;
3685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
3695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
37227d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen        public void onPostDialChar(String connectionId, char nextChar) {
37327d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen            SomeArgs args = SomeArgs.obtain();
37427d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen            args.arg1 = connectionId;
37527d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen            args.argi1 = nextChar;
37627d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen            mHandler.obtainMessage(MSG_ON_POST_DIAL_CHAR, args).sendToTarget();
37727d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen        }
37827d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen
37927d1c2d148fe377ca0d2744f0f85789a42c8f808Nancy Chen        @Override
3805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void queryRemoteConnectionServices(RemoteServiceCallback callback) {
3815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_QUERY_REMOTE_CALL_SERVICES, callback).sendToTarget();
3825d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3835d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setVideoState(String connectionId, int videoState) {
3865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, connectionId).sendToTarget();
3875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
390b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad        public void setVideoProvider(String connectionId, IVideoProvider videoProvider) {
3915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
393b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad            args.arg2 = videoProvider;
3945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_VIDEO_CALL_PROVIDER, args).sendToTarget();
3955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
398100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        public final void setIsVoipAudioMode(String connectionId, boolean isVoip) {
399100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            mHandler.obtainMessage(MSG_SET_IS_VOIP_AUDIO_MODE, isVoip ? 1 : 0, 0,
4005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    connectionId).sendToTarget();
4015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
4025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
4045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setStatusHints(String connectionId, StatusHints statusHints) {
4055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
4065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
4075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = statusHints;
4085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
4095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
4105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
412100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee        public final void setAddress(String connectionId, Uri address, int presentation) {
4135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
4145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
415100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            args.arg2 = address;
4165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = presentation;
417100e293fa8021caed956597daa4e01cb19be1c33Andrew Lee            mHandler.obtainMessage(MSG_SET_ADDRESS, args).sendToTarget();
4185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
4195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
4215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setCallerDisplayName(
4225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                String connectionId, String callerDisplayName, int presentation) {
4235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
4245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
4255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = callerDisplayName;
4265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = presentation;
4275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
4285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
4295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
4317c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon        public final void setConferenceableConnections(
4327c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon                String connectionId, List<String> conferenceableConnectionIds) {
4337c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon            SomeArgs args = SomeArgs.obtain();
4347c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon            args.arg1 = connectionId;
4357c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon            args.arg2 = conferenceableConnectionIds;
4367c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon            mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
4377c7bc7f6917484250974c5da00af9ef756844b0aSantos Cordon        }
4384a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn
4394a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn        @Override
4404a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn        public final void addExistingConnection(
4414a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn                String connectionId, ParcelableConnection connection) {
4424a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn            SomeArgs args = SomeArgs.obtain();
4434a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn            args.arg1 = connectionId;
4444a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn            args.arg2 = connection;
4454a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn            mHandler.obtainMessage(MSG_ADD_EXISTING_CONNECTION, args).sendToTarget();
4464a57b9b59b74c97e559a301af0add13cd4c3331cTyler Gunn        }
4476b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon
4486b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        @Override
449dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn        public final void putExtras(String connectionId, Bundle extras) {
4506b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            SomeArgs args = SomeArgs.obtain();
4516b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            args.arg1 = connectionId;
4526b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            args.arg2 = extras;
453dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn            mHandler.obtainMessage(MSG_PUT_EXTRAS, args).sendToTarget();
454dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn        }
455dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn
456dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn        @Override
457dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn        public final void removeExtras(String connectionId, List<String> keys) {
458dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn            SomeArgs args = SomeArgs.obtain();
459dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn            args.arg1 = connectionId;
460dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn            args.arg2 = keys;
461dee56a8a79f9daa1e597f5d4f399d3a5feedcac4Tyler Gunn            mHandler.obtainMessage(MSG_REMOVE_EXTRAS, args).sendToTarget();
4626b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        }
463bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn
464bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn        @Override
465876dbfb4767da4a2ba5459d5b78fb6eb55e4516fTyler Gunn        public final void onConnectionEvent(String connectionId, String event, Bundle extras) {
466bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn            SomeArgs args = SomeArgs.obtain();
467bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn            args.arg1 = connectionId;
468bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn            args.arg2 = event;
469876dbfb4767da4a2ba5459d5b78fb6eb55e4516fTyler Gunn            args.arg3 = extras;
470bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn            mHandler.obtainMessage(MSG_ON_CONNECTION_EVENT, args).sendToTarget();
471bd1eb1f105e99d55fe87d758e8eafbe55a221a30Tyler Gunn        }
4725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    };
4735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
4755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        mDelegate = delegate;
4765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    }
4775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
4785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    public IConnectionServiceAdapter getStub() {
4795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        return mStub;
4805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    }
4815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad}
482