package Communication.Messages.Service;
import java.net.InetSocketAddress;
import java.util.concurrent.LinkedBlockingQueue;
public abstract class QueueSendingThread extends SendingThread
{
private final LinkedBlockingQueue queue = new LinkedBlockingQueue<>();
public int getQueueLength()
{
return this.queue.size();
}
protected boolean addToSendQueue(InetSocketAddress recipient, Object o)
{
boolean ret = false;
synchronized (this.queue) {
ret = this.queue.add(new SendObject(recipient, o));
}
return ret;
}
protected boolean addToSendQueue(InetSocketAddress recipient, Object... objs)
{
boolean ret = true;
synchronized (this.queue)
{
for (Object obj : objs)
{
ret = this.addToSendQueue(recipient, obj) && ret;
}
}
return ret;
}
@Override
protected SendObject getNextSendObject()
{
try
{
return this.queue.take();
}
catch (Exception e)
{
this.interrupt();
}
return null;
}
}