/*
* IDK Game Server by Steve Winfield
* https://github.com/WinfieldSteve
*/
package org.stevewinfield.suja.idk.communication;
import java.util.LinkedList;
import java.util.Queue;
public class MessageReaderFactory {
private static final Queue<MessageReader> freeObjects = new LinkedList<>();
public static MessageReader getMessageReader(final short messageId, final byte[] body) {
if (freeObjects.size() > 0) {
MessageReader reader;
synchronized (freeObjects) {
reader = freeObjects.poll();
}
if (reader == null) {
return new MessageReader(messageId, body);
}
reader.initialize(messageId, body);
return reader;
}
return new MessageReader(messageId, body);
}
public static void objectCallback(final MessageReader reader) {
synchronized (freeObjects) {
freeObjects.offer(reader);
}
}
}