public void setScheduler(AbstractServerTransport.Scheduler newScheduler)
{
if (newScheduler == null)
{
Scheduler oldScheduler;
synchronized (getLock())
{
oldScheduler = _scheduler;
if (oldScheduler != null)
_scheduler = null;
}
if (oldScheduler != null)
oldScheduler.cancel();
}
else
{
Scheduler oldScheduler;
boolean schedule = false;
synchronized (getLock())
{
oldScheduler = _scheduler;
_scheduler = newScheduler;
if (hasNonLazyMessages() && _batch == 0)
{
schedule = true;
if (newScheduler instanceof AbstractHttpTransport.HttpScheduler)
_scheduler = null;
}
}
if (oldScheduler != null && oldScheduler != newScheduler)
oldScheduler.cancel();
if (schedule)
newScheduler.schedule();
}
}