mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-25 02:55:23 +00:00
57 lines
1.6 KiB
Java
57 lines
1.6 KiB
Java
|
package org.thoughtcrime.securesms.database;
|
||
|
|
||
|
import android.support.annotation.NonNull;
|
||
|
import android.util.Log;
|
||
|
|
||
|
import org.thoughtcrime.securesms.util.LRUCache;
|
||
|
|
||
|
public class EarlyReceiptCache {
|
||
|
|
||
|
private static final String TAG = EarlyReceiptCache.class.getSimpleName();
|
||
|
|
||
|
private final LRUCache<Placeholder, Long> cache = new LRUCache<>(100);
|
||
|
|
||
|
public synchronized void increment(long timestamp, String address) {
|
||
|
Log.w(TAG, this+"");
|
||
|
Log.w(TAG, String.format("Early receipt: %d,%s", timestamp, address));
|
||
|
Placeholder tuple = new Placeholder(timestamp, address);
|
||
|
Long count = cache.get(tuple);
|
||
|
|
||
|
if (count != null) {
|
||
|
cache.put(tuple, ++count);
|
||
|
} else {
|
||
|
cache.put(tuple, 1L);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public synchronized long remove(long timestamp, String address) {
|
||
|
Long count = cache.remove(new Placeholder(timestamp, address));
|
||
|
Log.w(TAG, this+"");
|
||
|
Log.w(TAG, String.format("Checking early receipts (%d, %s): %d", timestamp, address, count));
|
||
|
return count != null ? count : 0;
|
||
|
}
|
||
|
|
||
|
private class Placeholder {
|
||
|
|
||
|
private final long timestamp;
|
||
|
private final @NonNull String address;
|
||
|
|
||
|
private Placeholder(long timestamp, @NonNull String address) {
|
||
|
this.timestamp = timestamp;
|
||
|
this.address = address;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean equals(Object other) {
|
||
|
return other != null && other instanceof Placeholder &&
|
||
|
((Placeholder)other).timestamp == this.timestamp &&
|
||
|
((Placeholder)other).address.equals(this.address);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int hashCode() {
|
||
|
return (int)timestamp ^ address.hashCode();
|
||
|
}
|
||
|
}
|
||
|
}
|