/* * Copyright 2006-2010 Daniel Henninger. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */ package net.sf.kraken.protocols.oscar; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.kano.joscar.DefensiveTools; import net.kano.joscar.snac.SnacRequest; /** * Handles pending SNAC commands. * * @author Daniel Henninger * Heavily inspired by joscardemo from the joscar project. */ public class PendingSnacMgr { protected Map<Integer,List<SnacRequest>> snacs = new HashMap<Integer,List<SnacRequest>>(); public boolean isPending(int familyCode) { return snacs.containsKey(familyCode); } public void add(SnacRequest request) { Integer family = request.getCommand().getFamily(); List<SnacRequest> pending = snacs.get(family); pending.add(request); } public List<SnacRequest> getPending(int familyCode) { List<SnacRequest> pending = snacs.get(familyCode); return DefensiveTools.getUnmodifiableCopy(pending); } public void setPending(int familyCode, boolean pending) { if (pending) { snacs.put(familyCode, new ArrayList<SnacRequest>()); } else { snacs.remove(familyCode); } } }