/* * SquirrelID, a UUID library for Minecraft * Copyright (C) sk89q <http://www.sk89q.com> * Copyright (C) SquirrelID team and contributors * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.sk89q.squirrelid.cache; import com.google.common.collect.ImmutableMap; import com.sk89q.squirrelid.Profile; import javax.annotation.Nullable; import java.util.UUID; /** * Stores a "last known" mapping of UUIDs to names. */ public interface ProfileCache { /** * Store the given name as the last known name for the given UUID. * * <p>If the operation fails, an error will be logged but no exception * will be thrown.</p> * * @param profile a profile */ void put(Profile profile); /** * Store a list of zero or more names. * * <p>If the operation fails, an error will be logged but no exception * will be thrown.</p> * * @param profiles an iterable of profiles */ void putAll(Iterable<Profile> profiles); /** * Query the cache for the name for a given UUID. * * <p>If the operation fails, an error will be logged but no exception * will be thrown.</p> * * @param uuid the UUID * @return the name or {@code null} if it is not known */ @Nullable Profile getIfPresent(UUID uuid); /** * Query the cache for the names of the given UUIDs. * * <p>If the operation fails, an error will be logged but no exception * will be thrown.</p> * * @param ids a list of UUIDs to query * @return a map of results, which may not have a key for every given UUID */ ImmutableMap<UUID, Profile> getAllPresent(Iterable<UUID> ids); }