/*
OrpheusMS: MapleStory Private Server based on OdinMS
Copyright (C) 2012 Aaron Weiss <aaron@deviant-core.net>
Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.server;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*
* @author Danny//changed to map :3
*/
public class PlayerBuffStorage {
private int id = (int) (Math.random() * 100);
private final Lock mutex = new ReentrantLock();
private Map<Integer, List<PlayerBuffValueHolder>> buffs = new HashMap<Integer, List<PlayerBuffValueHolder>>();
public void addBuffsToStorage(int chrid, List<PlayerBuffValueHolder> toStore) {
mutex.lock();
try {
buffs.put(chrid, toStore);// Old one will be replace if it's in
// here.
} finally {
mutex.unlock();
}
}
public List<PlayerBuffValueHolder> getBuffsFromStorage(int chrid) {
mutex.lock();
try {
return buffs.remove(chrid);
} finally {
mutex.unlock();
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final PlayerBuffStorage other = (PlayerBuffStorage) obj;
if (id != other.id) {
return false;
}
return true;
}
}