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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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; package com.l2jmobius.gameserver.network;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger; import java.util.logging.Logger;
import com.l2jmobius.commons.concurrent.ThreadPool; 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 static final Logger LOGGER = Logger.getLogger(Disconnection.class.getName());
private ScheduledFuture<?> _disconnectionTask;
public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar) public static L2GameClient getClient(L2GameClient client, L2PcInstance activeChar)
{ {
if (client != null) if (client != null)
@@ -167,12 +170,24 @@ public final class Disconnection
public void defaultSequence(boolean toLoginScreen) public void defaultSequence(boolean toLoginScreen)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(toLoginScreen); close(toLoginScreen);
} }
public void defaultSequence(IClientOutgoingPacket packet) public void defaultSequence(IClientOutgoingPacket packet)
{ {
if (_disconnectionTask != null)
{
_disconnectionTask.cancel(false);
_disconnectionTask = null;
}
defaultSequence(); defaultSequence();
close(packet); close(packet);
} }
@@ -185,9 +200,9 @@ public final class Disconnection
public void onDisconnection() 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);
} }
} }
} }