• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.net;
18 
19 import java.util.Map;
20 
21 /**
22  * Interface used to get feedback about a {@link android.net.LinkSocket}.  Instance is optionally
23  * passed when a LinkSocket is constructed.  Multiple LinkSockets may use the same notifier.
24  * @hide
25  */
26 public interface LinkSocketNotifier {
27     /**
28      * This callback function will be called if a better link
29      * becomes available.
30      * TODO - this shouldn't be checked for all cases - what's the conditional
31      *        flag?
32      * If the duplicate socket is accepted, the original will be marked invalid
33      * and additional use will throw exceptions.
34      * @param original the original LinkSocket
35      * @param duplicate the new LinkSocket that better meets the application
36      *                  requirements
37      * @return {@code true} if the application intends to use this link
38      *
39      * REM
40      * TODO - how agressive should we be?
41      * At a minimum CS tracks which LS have this turned on and tracks the requirements
42      * When a new link becomes available, automatically check if any of the LinkSockets
43      *   will care.
44      * If found, grab a refcount on the link so it doesn't go away and send notification
45      * Optionally, periodically setup connection on available networks to check for better links
46      * Maybe pass this info into the LinkFactories so condition changes can be acted on more quickly
47      */
onBetterLinkAvailable(LinkSocket original, LinkSocket duplicate)48     public boolean onBetterLinkAvailable(LinkSocket original, LinkSocket duplicate);
49 
50     /**
51      * This callback function will be called when a LinkSocket no longer has
52      * an active link.
53      * @param socket the LinkSocket that lost its link
54      *
55      * REM
56      * NetworkStateTracker tells us it is disconnected
57      * CS checks the table for LS on that link
58      * CS calls each callback (need to work out p2p cross process callback)
59      */
onLinkLost(LinkSocket socket)60     public void onLinkLost(LinkSocket socket);
61 
62     /**
63      * This callback function will be called when an application calls
64      * requestNewLink on a LinkSocket but the LinkSocket is unable to find
65      * a suitable new link.
66      * @param socket the LinkSocket for which a new link was not found
67      * TODO - why the diff between initial request (sync) and requestNewLink?
68      *
69      * REM
70      * CS process of trying to find a new link must track the LS that started it
71      * on failure, call callback
72      */
onNewLinkUnavailable(LinkSocket socket)73     public void onNewLinkUnavailable(LinkSocket socket);
74 
75     /**
76      * This callback function will be called when any of the notification-marked
77      * capabilities of the LinkSocket (e.g. upstream bandwidth) have changed.
78      * @param socket the linkSocet for which capabilities have changed
79      * @param changedCapabilities the set of capabilities that the application
80      *                            is interested in and have changed (with new values)
81      *
82      * REM
83      * Maybe pass the interesting capabilities into the Links.
84      * Get notified of every capability change
85      * check for LinkSockets on that Link that are interested in that Capability - call them
86      */
onCapabilitiesChanged(LinkSocket socket, LinkCapabilities changedCapabilities)87     public void onCapabilitiesChanged(LinkSocket socket, LinkCapabilities changedCapabilities);
88 }
89