Disconnection task improvement.
Contributed by Sahar.
This commit is contained in:
		@@ -16,6 +16,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package com.l2jmobius.gameserver.network;
 | 
			
		||||
 | 
			
		||||
import java.util.concurrent.ScheduledFuture;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
import com.l2jmobius.commons.concurrent.ThreadPool;
 | 
			
		||||
@@ -33,6 +34,8 @@ public final class Disconnection
 | 
			
		||||
{
 | 
			
		||||
	private static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
 | 
			
		||||
	
 | 
			
		||||
	private ScheduledFuture<?> _disconnectionTask;
 | 
			
		||||
	
 | 
			
		||||
	public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
 | 
			
		||||
	{
 | 
			
		||||
		if (client != null)
 | 
			
		||||
@@ -167,12 +170,24 @@ public final class Disconnection
 | 
			
		||||
	
 | 
			
		||||
	public void defaultSequence(boolean toLoginScreen)
 | 
			
		||||
	{
 | 
			
		||||
		if (_disconnectionTask != null)
 | 
			
		||||
		{
 | 
			
		||||
			_disconnectionTask.cancel(false);
 | 
			
		||||
			_disconnectionTask = null;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		defaultSequence();
 | 
			
		||||
		close(toLoginScreen);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void defaultSequence(IClientOutgoingPacket packet)
 | 
			
		||||
	{
 | 
			
		||||
		if (_disconnectionTask != null)
 | 
			
		||||
		{
 | 
			
		||||
			_disconnectionTask.cancel(false);
 | 
			
		||||
			_disconnectionTask = null;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		defaultSequence();
 | 
			
		||||
		close(packet);
 | 
			
		||||
	}
 | 
			
		||||
@@ -185,9 +200,9 @@ public final class Disconnection
 | 
			
		||||
	
 | 
			
		||||
	public void onDisconnection()
 | 
			
		||||
	{
 | 
			
		||||
		if (_activeChar != null)
 | 
			
		||||
		if ((_activeChar != null) && (_disconnectionTask == null))
 | 
			
		||||
		{
 | 
			
		||||
			ThreadPool.schedule(() -> defaultSequence(), _activeChar.canLogout() ? 0 : AttackStanceTaskManager.COMBAT_TIME);
 | 
			
		||||
			_disconnectionTask = ThreadPool.schedule(() -> defaultSequence(), _activeChar.canLogout() ? 0 : AttackStanceTaskManager.COMBAT_TIME);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user