19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.net;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19c7a98341b053bd8090accca151e8f3522f2dd126Wink Savilleimport android.content.Context;
20c7a98341b053bd8090accca151e8f3522f2dd126Wink Savilleimport android.os.Handler;
21665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwaltimport android.os.Messenger;
22665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt
23665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwaltimport static com.android.internal.util.Protocol.BASE_NETWORK_STATE_TRACKER;
24c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
26c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * Interface provides the {@link com.android.server.ConnectivityService}
27c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * with three services. Events to the ConnectivityService when
28c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * changes occur, an API for controlling the network and storage
29c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * for network specific information.
30c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville *
31c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * The Connectivity will call startMonitoring before any other
32c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville * method is called.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
36d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriffpublic interface NetworkStateTracker {
3742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
39c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
40c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Event Interface back to ConnectivityService.
41c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     *
42c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * The events that are to be sent back to the Handler passed
43c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * to startMonitoring when the particular event occurs.
44c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
47d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    /**
48c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * The network state has changed and the NetworkInfo object
49c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * contains the new state.
50c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     *
51c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.what = EVENT_STATE_CHANGED
52c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.obj = NetworkInfo object
53d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff     */
54665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_STATE_CHANGED = BASE_NETWORK_STATE_TRACKER;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
57c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.what = EVENT_CONFIGURATION_CHANGED
58c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.obj = NetworkInfo object
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
60665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_CONFIGURATION_CHANGED = BASE_NETWORK_STATE_TRACKER + 1;
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
63c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.what = EVENT_RESTORE_DEFAULT_NETWORK
64c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * msg.obj = FeatureUser object
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
66665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_RESTORE_DEFAULT_NETWORK = BASE_NETWORK_STATE_TRACKER + 2;
6742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
69d14e17627266ff8cf804d1f8241a0a4bde7a0ab4Robert Greenwalt     * msg.what = EVENT_NETWORK_SUBTYPE_CHANGED
70d14e17627266ff8cf804d1f8241a0a4bde7a0ab4Robert Greenwalt     * msg.obj = NetworkInfo object
71d14e17627266ff8cf804d1f8241a0a4bde7a0ab4Robert Greenwalt     */
72665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_NETWORK_SUBTYPE_CHANGED = BASE_NETWORK_STATE_TRACKER + 3;
73665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt
74665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    /**
75665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * msg.what = EVENT_NETWORK_CONNECTED
76665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * msg.obj = LinkProperties object
77665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     */
78665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_NETWORK_CONNECTED = BASE_NETWORK_STATE_TRACKER + 4;
79665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt
80665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    /**
81665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * msg.what = EVENT_NETWORK_CONNECTION_DISCONNECTED
82665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * msg.obj = LinkProperties object, same iface name
83665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     */
84665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public static final int EVENT_NETWORK_DISCONNECTED = BASE_NETWORK_STATE_TRACKER + 5;
85665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt
86d14e17627266ff8cf804d1f8241a0a4bde7a0ab4Robert Greenwalt
87d14e17627266ff8cf804d1f8241a0a4bde7a0ab4Robert Greenwalt    /**
88c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
89c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Control Interface
90c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
93c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Begin monitoring data connectivity.
94c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     *
95c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * This is the first method called when this interface is used.
96c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     *
97c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * @param context is the current Android context
98c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * @param target is the Hander to which to return the events.
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
100c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public void startMonitoring(Context context, Handler target);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
103c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Fetch NetworkInfo for the network
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
105c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public NetworkInfo getNetworkInfo();
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
108f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     * Return the LinkProperties for the connection.
109f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     *
110f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     * @return a copy of the LinkProperties, is never null.
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11237e65ebb7eb932e1a144b1cab262e11ca5fd109bRobert Greenwalt    public LinkProperties getLinkProperties();
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
115f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     * A capability is an Integer/String pair, the capabilities
116f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     * are defined in the class LinkSocket#Key.
117f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     *
118f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     * @return a copy of this connections capabilities, may be empty but never null.
119f61101f6266be243c481d163b95e65d67b8d1669Wink Saville     */
120f61101f6266be243c481d163b95e65d67b8d1669Wink Saville    public LinkCapabilities getLinkCapabilities();
121f61101f6266be243c481d163b95e65d67b8d1669Wink Saville
122f61101f6266be243c481d163b95e65d67b8d1669Wink Saville    /**
123c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Return the system properties name associated with the tcp buffer sizes
124c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * for this network.
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
126c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public String getTcpBufferSizesPropName();
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disable connectivity to a network
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} if a teardown occurred, {@code false} if the
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * teardown did not occur.
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
133d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    public boolean teardown();
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Reenable connectivity to a network after a {@link #teardown()}.
13702648a4b8422733ed401f07edf8e426318bb2f8dRobert Greenwalt     * @return {@code true} if we're connected or expect to be connected
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
139d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    public boolean reconnect();
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
142da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff     * Ready to switch on to the network after captive portal check
143da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff     */
144da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff    public void captivePortalCheckComplete();
145da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff
146da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff    /**
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Turn the wireless radio off for a network.
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param turnOn {@code true} to turn the radio on, {@code false}
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
150d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    public boolean setRadio(boolean turnOn);
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an indication of whether this network is available for
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connections. A value of {@code false} means that some quasi-permanent
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * condition prevents connectivity to this network.
15612e24ae7600f8297abcde0d7c29d6cfb64f59dfbRobert Greenwalt     *
15712e24ae7600f8297abcde0d7c29d6cfb64f59dfbRobert Greenwalt     * NOTE that this is broken on multi-connection devices.  Should be fixed in J release
15812e24ae7600f8297abcde0d7c29d6cfb64f59dfbRobert Greenwalt     * TODO - fix on multi-pdp devices
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
160d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    public boolean isAvailable();
161d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff
162d649c12815bcf944b2c97371f3f60716a42a1557Irfan Sheriff    /**
1638e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     * User control of data connection through this network, typically persisted
1648e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     * internally.
165e798268f16ec6d0542616ea45ca0bb18ae2645eeWink Saville     */
1668e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey    public void setUserDataEnable(boolean enabled);
1678e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey
1688e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey    /**
1698e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     * Policy control of data connection through this network, typically not
1708e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     * persisted internally. Usually used when {@link NetworkPolicy#limitBytes}
1718e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     * is passed.
1728e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey     */
1738e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey    public void setPolicyDataEnable(boolean enabled);
174e798268f16ec6d0542616ea45ca0bb18ae2645eeWink Saville
175e798268f16ec6d0542616ea45ca0bb18ae2645eeWink Saville    /**
176c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
177c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Storage API used by ConnectivityService for saving
178c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Network specific information.
179c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * -------------------------------------------------------------
180c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
181c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
182c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
183c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Check if private DNS route is set for the network
184c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
185c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public boolean isPrivateDnsRouteSet();
186c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
187c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
188c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Set a flag indicating private DNS route is set
189c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
190c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public void privateDnsRouteSet(boolean enabled);
191c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
192c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
193c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Check if default route is set
194c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
195c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public boolean isDefaultRouteSet();
196c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
197c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
198c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Set a flag indicating default route is set for the network
199c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
200c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public void defaultRouteSet(boolean enabled);
201c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
202c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
203c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Check if tear down was requested
204c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
205c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public boolean isTeardownRequested();
206c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville
207c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    /**
208c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     * Indicate tear down requested from connectivity
209c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville     */
210c7a98341b053bd8090accca151e8f3522f2dd126Wink Saville    public void setTeardownRequested(boolean isRequested);
211d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt
212d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt    /**
213d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt     * An external dependency has been met/unmet
214d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt     */
215d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt    public void setDependencyMet(boolean met);
21669edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti
21769edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti    /**
21869edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti     * Informs the state tracker that another interface is stacked on top of it.
21969edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti     **/
22069edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti    public void addStackedLink(LinkProperties link);
22169edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti
22269edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti    /**
22369edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti     * Informs the state tracker that a stacked interface has been removed.
22469edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti     **/
22569edd64d9bf839428ce0a7723cd0f1deda98dc0dLorenzo Colitti    public void removeStackedLink(LinkProperties link);
226665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt
227665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    /*
228665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * Called once to setup async channel between this and
229665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     * the underlying network specific code.
230665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt     */
231665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    public void supplyMessenger(Messenger messenger);
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
233