Disconnection task improvement.

Contributed by Sahar.
This commit is contained in:
MobiusDev
2018-06-12 03:34:23 +00:00
parent 3ae9b7a35d
commit 5610e74ef7
8 changed files with 136 additions and 16 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}