internal void childRemoved(DataSnapshot dataSnapshot) { string key = dataSnapshot.Key; LocationInfo info = GeoUtils.getMapSafe(key, locationInfos); if (info != null) { ValueChangedListenerSetup vs = new ValueChangedListenerSetup(geoFire.getDatabaseRefForKey(key), true, (s) => { if (s.DatabaseError == null) { lock (Lock) { GeoLocation location = GeoFire.getLocationValue(dataSnapshot); GeoHash hash = (location != null) ? new GeoHash(location) : null; if (hash == null || !geoHashQueriesContainGeoHash(hash)) { LocationInfo _info = GeoUtils.getMapSafe(key, locationInfos); locationInfos.Remove(key); if (_info != null && _info.inGeoQuery) { foreach (GeoQueryEventListener listener in eventListeners) { geoFire.raiseEvent(() => { listener.onKeyExited(key); }); } } } } } }); } }
private void addValueToReadyListener(Query firebase, GeoHashQuery query) { ValueChangedListenerSetup vs = new ValueChangedListenerSetup(firebase, true, (e) => { lock (Lock) { if (e.DatabaseError == null) { this.outstandingQueries.Remove(query); this.checkAndFireReady(); } else { foreach (GeoQueryEventListener listener in eventListeners) { geoFire.raiseEvent(() => { listener.onGeoQueryError(e.DatabaseError); }); } } } }); }