package com.mapzen.android.lost.internal;
import com.mapzen.android.lost.api.LocationAvailability;
import com.mapzen.android.lost.api.LocationCallback;
import com.mapzen.android.lost.api.LocationListener;
import com.mapzen.android.lost.api.LocationRequest;
import com.mapzen.android.lost.api.LocationResult;
import com.mapzen.android.lost.api.LostApiClient;
import android.app.PendingIntent;
import android.content.Context;
import android.location.Location;
import android.os.Looper;
import java.util.Map;
import java.util.Set;
/**
* Used by {@link LostApiClientImpl} to manage connected clients and by
* {@link FusedLocationProviderServiceDelegate} to manage client's {@link LocationListener}s,
* {@link PendingIntent}s, and {@link LocationCallback}s.
*/
public interface ClientManager {
void addClient(LostApiClient client);
void removeClient(LostApiClient client);
boolean containsClient(LostApiClient client);
int numberOfClients();
void addListener(LostApiClient client, LocationRequest request, LocationListener listener);
void addPendingIntent(LostApiClient client, LocationRequest request,
PendingIntent callbackIntent);
void addLocationCallback(LostApiClient client, LocationRequest request,
LocationCallback callback, Looper looper);
boolean removeListener(LostApiClient client, LocationListener listener);
boolean removePendingIntent(LostApiClient client, PendingIntent callbackIntent);
boolean removeLocationCallback(LostApiClient client, LocationCallback callback);
ReportedChanges reportLocationChanged(Location location);
ReportedChanges sendPendingIntent(Context context, Location location,
LocationAvailability availability, LocationResult result);
ReportedChanges reportLocationResult(Location location, final LocationResult result);
void updateReportedValues(ReportedChanges changes);
void notifyLocationAvailability(final LocationAvailability availability);
boolean hasNoListeners();
Map<LostApiClient, Set<LocationListener>> getLocationListeners();
Map<LostApiClient, Set<PendingIntent>> getPendingIntents();
Map<LostApiClient, Set<LocationCallback>> getLocationCallbacks();
}