RuneHive-Game
Loading...
Searching...
No Matches
LoginExecutorService.java
Go to the documentation of this file.
1package com.runehive.net;
2
3import com.runehive.net.codec.login.LoginDetailsPacket;
4import com.runehive.net.session.LoginSession;
5import org.slf4j.Logger;
6import org.slf4j.LoggerFactory;
7
8import java.io.Closeable;
9import java.io.IOException;
10import java.util.concurrent.ExecutorService;
11import java.util.concurrent.Executors;
12import java.util.concurrent.TimeUnit;
13
14public final class LoginExecutorService implements Closeable {
15
16 private static final Logger logger = LoggerFactory.getLogger(LoginExecutorService.class);
17
18 private static final long TERMINATION_TIMEOUT = 60;
19 private static final TimeUnit TERMINATION_TIMEOUT_UNIT = TimeUnit.SECONDS;
20
21 private final ExecutorService executorService;
22
23 public LoginExecutorService(final int threads) {
24 this.executorService = Executors.newFixedThreadPool(threads);
25 }
26
27 @Override
28 public void close() throws IOException {
29 final ExecutorService executorService = this.executorService;
30 executorService.shutdown();
31 try {
32 // Wait a while for existing tasks to terminate
34 executorService.shutdownNow(); // Cancel currently executing tasks
35 // Wait a while for tasks to respond to being cancelled
37 logger.warn("Pool did not terminate in {} {}", TERMINATION_TIMEOUT, TERMINATION_TIMEOUT_UNIT);
38 }
39 }
40 } catch (final InterruptedException ex) {
41 // (Re-)Cancel if current thread also interrupted
42 executorService.shutdownNow();
43 // Preserve interrupt status
44 Thread.currentThread().interrupt();
45 }
46 }
47
48 public void execute(final LoginSession loginSession,
49 final LoginDetailsPacket loginDetailsPacket) {
50 executorService.execute(() -> loginSession.handleUserLoginDetails(loginDetailsPacket));
51 }
52
53}
void execute(final LoginSession loginSession, final LoginDetailsPacket loginDetailsPacket)
Represents a Session for authenticating users logging in.
void handleUserLoginDetails(final LoginDetailsPacket packet)