non funziona
This commit is contained in:
parent
4760152e90
commit
5117b28e2c
29 changed files with 1707 additions and 1663 deletions
1432
.idea/workspace.xml
generated
1432
.idea/workspace.xml
generated
File diff suppressed because it is too large
Load diff
|
|
@ -68,7 +68,7 @@ public class App extends JFrame {
|
||||||
logger.write("APP: Font not found!");
|
logger.write("APP: Font not found!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Services*/
|
/*services*/
|
||||||
gameService = new GameService();
|
gameService = new GameService();
|
||||||
authService = new AuthService();
|
authService = new AuthService();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ public class GamePage extends Page {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
Config.timeoutGame
|
Config.gameTimeout
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,14 @@ public class Config {
|
||||||
public static String ScoreMulticastServerURI = "226.226.226.226";
|
public static String ScoreMulticastServerURI = "226.226.226.226";
|
||||||
|
|
||||||
public static Integer NotificationServerPort = 20000;
|
public static Integer NotificationServerPort = 20000;
|
||||||
public static Integer NotificationServerStubPort = 5000;
|
public static Integer NotificationServerStubPort = 30000;
|
||||||
public static String NotificationServerName ="notification";
|
public static String NotificationServerName ="notification";
|
||||||
public static int timeoutGame = 120;
|
|
||||||
|
public static String RedisServerURI = "localhost";
|
||||||
|
|
||||||
|
public static int gameTimeout = 10; //2 minuti in sec
|
||||||
|
public static int joinMatchTimeout = 5000; //7 minuti in millisec
|
||||||
|
public static int sendWordsTimeout = 3000; //5 minuti in millisec
|
||||||
|
|
||||||
public static String getAuthServerURI(){
|
public static String getAuthServerURI(){
|
||||||
return "rmi://".concat(AuthServerURI).concat(":").concat(AuthServerPort.toString());
|
return "rmi://".concat(AuthServerURI).concat(":").concat(AuthServerPort.toString());
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
package com.texttwist.server;
|
package com.texttwist.server;
|
||||||
|
|
||||||
import utilities.Logger;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author: Lorenzo Iovino on 14/06/2017.
|
||||||
|
* Description: Main
|
||||||
|
*/
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
Server ttServer = new Server();
|
new Server();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,78 @@
|
||||||
package com.texttwist.server;
|
package com.texttwist.server;
|
||||||
|
|
||||||
import com.texttwist.server.components.Auth;
|
import com.texttwist.server.services.AuthService;
|
||||||
import com.texttwist.server.components.GameServer;
|
import com.texttwist.server.services.MessageService;
|
||||||
import com.texttwist.server.components.NotificationServer;
|
import com.texttwist.server.services.NotificationService;
|
||||||
import constants.Config;
|
import constants.Config;
|
||||||
import interfaces.INotificationServer;
|
import interfaces.INotificationServer;
|
||||||
import redis.clients.jedis.Jedis;
|
|
||||||
import redis.clients.jedis.JedisPool;
|
import redis.clients.jedis.JedisPool;
|
||||||
import redis.clients.jedis.JedisPoolConfig;
|
import redis.clients.jedis.JedisPoolConfig;
|
||||||
import utilities.Logger;
|
import utilities.Logger;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.rmi.AlreadyBoundException;
|
import java.rmi.AlreadyBoundException;
|
||||||
|
import java.rmi.RemoteException;
|
||||||
import java.rmi.registry.LocateRegistry;
|
import java.rmi.registry.LocateRegistry;
|
||||||
import java.rmi.registry.Registry;
|
import java.rmi.registry.Registry;
|
||||||
import java.rmi.server.UnicastRemoteObject;
|
import java.rmi.server.UnicastRemoteObject;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 15/06/2017.
|
* Author: Lorenzo Iovino on 15/06/2017.
|
||||||
|
* Description: Server. Initialize all services.
|
||||||
*/
|
*/
|
||||||
public class Server {
|
public class Server {
|
||||||
public static NotificationServer notificationServer;
|
public static NotificationService notificationServer;
|
||||||
public static JedisPool jedisPool;
|
public static JedisPool jedisPool;
|
||||||
public static Logger logger;
|
public static Logger logger;
|
||||||
|
public static AuthService auth;
|
||||||
|
|
||||||
public Server() throws IOException {
|
public Server() throws IOException {
|
||||||
logger = new Logger(new File("./notificationServer.log"), "Server", true);
|
logger = new Logger(new File("./notificationServer.log"), "Server", true);
|
||||||
Server.logger.write("Server starting ...");
|
Server.logger.write("Services starting ...");
|
||||||
|
startAuthService();
|
||||||
//Start services
|
startJedisService();
|
||||||
|
startMessageService();
|
||||||
|
startNotificationService();
|
||||||
|
Server.logger.write("Services started correctly ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startAuthService(){
|
||||||
|
//Starting Auth service based on RMI
|
||||||
try {
|
try {
|
||||||
//Definitions of registry for auth
|
auth = new AuthService(Config.AuthServerPort);
|
||||||
Auth auth = new Auth(Config.AuthServerPort);
|
|
||||||
Registry authRegistry = LocateRegistry.createRegistry(auth.serverPort);
|
Registry authRegistry = LocateRegistry.createRegistry(auth.serverPort);
|
||||||
authRegistry.bind("auth", auth);
|
authRegistry.bind("auth", auth);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Server.logger.write("SERVER: RMI authentication service error (Remote exception)");
|
||||||
|
} catch (AlreadyBoundException e) {
|
||||||
|
Server.logger.write("SERVER: RMI authentication service can't use this port because is busy ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Connecting to Redis server on localhost
|
private void startJedisService(){
|
||||||
jedisPool = new JedisPool(new JedisPoolConfig(), "localhost");
|
//Starting Jedis pool for Redis connection
|
||||||
|
jedisPool = new JedisPool(new JedisPoolConfig(), Config.RedisServerURI);
|
||||||
|
}
|
||||||
|
|
||||||
GameServer gameServer = new GameServer(Config.GameServerPort);
|
private void startMessageService(){
|
||||||
new Thread(gameServer).start();
|
//Starting the Message service based on TCP
|
||||||
|
new Thread(new MessageService(Config.GameServerPort)).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startNotificationService(){
|
||||||
|
//Starting Notification service based on RMI
|
||||||
try {
|
try {
|
||||||
/*registrazione presso il registry */
|
notificationServer = new NotificationService();
|
||||||
notificationServer = new NotificationServer();
|
|
||||||
INotificationServer stub = (INotificationServer) UnicastRemoteObject.exportObject(notificationServer, Config.NotificationServerPort);
|
INotificationServer stub = (INotificationServer) UnicastRemoteObject.exportObject(notificationServer, Config.NotificationServerPort);
|
||||||
LocateRegistry.createRegistry(Config.NotificationServerStubPort);
|
LocateRegistry.createRegistry(Config.NotificationServerStubPort);
|
||||||
|
|
||||||
Registry notificationRegistry = LocateRegistry.getRegistry(Config.NotificationServerStubPort);
|
Registry notificationRegistry = LocateRegistry.getRegistry(Config.NotificationServerStubPort);
|
||||||
notificationRegistry.bind(Config.NotificationServerName, stub);
|
notificationRegistry.bind(Config.NotificationServerName, stub);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Server.logger.write("SERVER: RMI notification service error (Remote exception)");
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Eccezione" + e);
|
|
||||||
}
|
|
||||||
Server.logger.write("Server started");
|
|
||||||
} catch (AlreadyBoundException e) {
|
} catch (AlreadyBoundException e) {
|
||||||
e.printStackTrace();
|
Server.logger.write("SERVER: RMI notification service can't use this port because is busy ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
||||||
package com.texttwist.server.components;
|
|
||||||
import interfaces.INotificationClient;
|
|
||||||
import models.Session;
|
|
||||||
import models.User;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by loke on 17/06/2017.
|
|
||||||
*/
|
|
||||||
public class SessionsManager {
|
|
||||||
|
|
||||||
private List<Session> sessions = Collections.synchronizedList(new ArrayList<Session>());
|
|
||||||
private static class Holder {
|
|
||||||
static final SessionsManager INSTANCE = new SessionsManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SessionsManager getInstance() {
|
|
||||||
return Holder.INSTANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SessionsManager(){}
|
|
||||||
|
|
||||||
public boolean add(String userName, String token) {
|
|
||||||
remove(userName);
|
|
||||||
return sessions.add(new Session(new User(userName,"",0), token));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printAll(){
|
|
||||||
Iterator<Session> i = sessions.iterator();
|
|
||||||
while (i.hasNext()) {
|
|
||||||
Session elem = i.next();
|
|
||||||
System.out.println(elem.account.userName + " | " + elem.token);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean remove(String userName){
|
|
||||||
if(exists(userName)) {
|
|
||||||
Session s = getSession(userName);
|
|
||||||
if(s != null) {
|
|
||||||
sessions.remove(s);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Session getSession(String userName) {
|
|
||||||
Iterator<Session> i = sessions.iterator();
|
|
||||||
while (i.hasNext()) {
|
|
||||||
Session elem = i.next();
|
|
||||||
if (elem.account.userName.equals(userName)) {
|
|
||||||
return elem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean exists(String userName) {
|
|
||||||
Iterator<Session> i = sessions.iterator();
|
|
||||||
while (i.hasNext()) {
|
|
||||||
Session elem = i.next();
|
|
||||||
if (elem.account.userName.equals(userName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public boolean isValidToken(String token) {
|
|
||||||
Iterator<Session> i = sessions.iterator();
|
|
||||||
while (i.hasNext()) {
|
|
||||||
if (i.next().token.equals(token)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +1,20 @@
|
||||||
package com.texttwist.server.models;
|
package com.texttwist.server.models;
|
||||||
|
|
||||||
|
import com.texttwist.server.Server;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.channels.FileChannel;
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.nio.file.StandardOpenOption;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 26/06/2017.
|
* Author: Lorenzo Iovino on 26/06/2017.
|
||||||
|
* Description: Dictionary Model. Provides the dictionary and methods for manage it
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Dictionary {
|
public class Dictionary {
|
||||||
|
|
||||||
static DefaultListModel<String> wordList = new DefaultListModel<>();
|
private static DefaultListModel<String> wordList = new DefaultListModel<>();
|
||||||
private Random randomGenerator;
|
|
||||||
|
|
||||||
public Dictionary(String dictionaryPath) {
|
public Dictionary(String dictionaryPath) {
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(new File(dictionaryPath)))) {
|
try (BufferedReader br = new BufferedReader(new FileReader(new File(dictionaryPath)))) {
|
||||||
|
|
@ -25,15 +22,16 @@ public class Dictionary {
|
||||||
wordList.addElement(line);
|
wordList.addElement(line);
|
||||||
}
|
}
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
e.printStackTrace();
|
Server.logger.write("DICTIONARY: Dictionary file not found!");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
Server.logger.write("DICTIONARY: Can't read dictionary file!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Get a random word in wordsList with minimumWordSize < size < maximumWordSize
|
||||||
public String getRandomWord(int minimumWordSize, int maximumWordSize){
|
public String getRandomWord(int minimumWordSize, int maximumWordSize){
|
||||||
|
|
||||||
randomGenerator = new Random();
|
Random randomGenerator = new Random();
|
||||||
int index = randomGenerator.nextInt(wordList.size());
|
int index = randomGenerator.nextInt(wordList.size());
|
||||||
String word = wordList.get(index);
|
String word = wordList.get(index);
|
||||||
if(word.length() >= minimumWordSize && word.length() <= maximumWordSize) {
|
if(word.length() >= minimumWordSize && word.length() <= maximumWordSize) {
|
||||||
|
|
@ -55,6 +53,7 @@ public class Dictionary {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Check if a word is contained in dictionary
|
||||||
public static Boolean isContainedInDictionary(String word){
|
public static Boolean isContainedInDictionary(String word){
|
||||||
if(word.equals("")){
|
if(word.equals("")){
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -66,5 +65,4 @@ public class Dictionary {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,57 @@
|
||||||
package com.texttwist.server.models;
|
package com.texttwist.server.models;
|
||||||
|
|
||||||
import com.texttwist.server.components.GameServer;
|
import com.texttwist.server.services.MessageService;
|
||||||
import com.texttwist.server.tasks.MatchTimeout;
|
import com.texttwist.server.tasks.MatchTimeout;
|
||||||
import constants.Config;
|
|
||||||
import javafx.util.Pair;
|
import javafx.util.Pair;
|
||||||
import models.Message;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.*;
|
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
|
||||||
|
|
||||||
import static com.texttwist.server.components.GameServer.activeMatches;
|
import static com.texttwist.server.services.MessageService.activeMatches;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 23/06/2017.
|
* Author: Lorenzo Iovino on 23/06/2017.
|
||||||
|
* Description: Match Model. Methods for manage the matches and model of single match.
|
||||||
|
* Single point of concurrent access.
|
||||||
*/
|
*/
|
||||||
public class Match {
|
public class Match {
|
||||||
public final List<Pair<String,Integer>> playersStatus = Collections.synchronizedList(new ArrayList<>()); //Usare Liste!!!!!!!
|
|
||||||
public final List<Pair<String,SocketChannel>> playersSocket = Collections.synchronizedList(new ArrayList<>());
|
|
||||||
private boolean started = false;
|
|
||||||
public final String matchCreator;
|
|
||||||
public Integer multicastId;
|
|
||||||
public Future<Boolean> timeout;
|
|
||||||
public boolean matchTimeout = true;
|
|
||||||
public boolean joinTimeout =true;
|
|
||||||
public DefaultListModel<String> letters;
|
|
||||||
protected ExecutorService threadPool = Executors.newSingleThreadExecutor();
|
|
||||||
|
|
||||||
|
/****GLOBAL AREA OF ALL MATCHES****/
|
||||||
|
//Players status: A list of pair where elements are <playerName, status>.
|
||||||
|
// status is 0 if user is not currently in a match, and 1 otherwise
|
||||||
|
public final List<Pair<String,Integer>> playersStatus = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
|
//Players socket: A list of pair where elements are <playerName, socketChannel>.
|
||||||
|
// socketChannel is the TCP socket associated with client for messages exchange
|
||||||
|
public final List<Pair<String,SocketChannel>> playersSocket = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
|
//Players score: A list of pair where elements are <playerName, score>.
|
||||||
public final List<Pair<String,Integer>> playersScore = Collections.synchronizedList(new ArrayList<>());
|
public final List<Pair<String,Integer>> playersScore = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
|
|
||||||
|
/****SINGLE INSTANCE OF MATCH****/
|
||||||
|
//If match is started
|
||||||
|
private boolean started = false;
|
||||||
|
|
||||||
|
//Name of the creator of the match
|
||||||
|
public final String matchCreator;
|
||||||
|
|
||||||
|
//MulticastID associated with this match
|
||||||
|
public Integer multicastId;
|
||||||
|
|
||||||
|
//True if happen timeout, false otherwise
|
||||||
|
public boolean matchTimeout;
|
||||||
|
public boolean joinTimeout;
|
||||||
|
|
||||||
|
//Letters of the match
|
||||||
|
public DefaultListModel<String> letters;
|
||||||
|
|
||||||
|
protected ExecutorService matchTimeoutThread = Executors.newSingleThreadExecutor();
|
||||||
|
|
||||||
public Match(String matchCreator, DefaultListModel<String> players){
|
public Match(String matchCreator, DefaultListModel<String> players){
|
||||||
for (int i =0; i < players.size(); i++){
|
for (int i =0; i < players.size(); i++){
|
||||||
this.playersStatus.add(new Pair<>(players.get(i), 0));
|
this.playersStatus.add(new Pair<>(players.get(i), 0));
|
||||||
|
|
@ -47,40 +64,21 @@ public class Match {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Void sendScores(){
|
|
||||||
while (true) {
|
|
||||||
System.out.println("SENDING");
|
|
||||||
Message msg = new Message("FINALSCORE", "SERVER", "", this.getMatchPlayersScoreAsStringList());
|
|
||||||
|
|
||||||
MulticastSocket multicastSocket = null;
|
|
||||||
try {
|
|
||||||
multicastSocket = new MulticastSocket(this.multicastId);
|
|
||||||
InetAddress ia = null;
|
|
||||||
ia = InetAddress.getByName(Config.ScoreMulticastServerURI);
|
|
||||||
DatagramPacket hi = new DatagramPacket(msg.toString().getBytes(), msg.toString().length(), ia, this.multicastId);
|
|
||||||
multicastSocket.send(hi);
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
activeMatches.remove(Match.findMatchIndex(activeMatches, this.matchCreator));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static Match findMatch(List<Match> matches, String matchName){
|
public static Match findMatch(List<Match> matches, String matchName){
|
||||||
for (int i = 0; i < matches.size(); i++) {
|
for (Match match : matches) {
|
||||||
if (matches.get(i).matchCreator.equals(matchName)) {
|
if (match.matchCreator.equals(matchName)) {
|
||||||
return matches.get(i);
|
return match;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void printAll(){
|
public void printAll(){
|
||||||
for (int i = 0; i < playersScore.size(); i++) {
|
for (Pair<String, Integer> aPlayersScore : playersScore) {
|
||||||
System.out.println(playersScore.get(i).getKey() + " : " +playersScore.get(i).getValue());
|
System.out.println(aPlayersScore.getKey() + " : " + aPlayersScore.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static int findMatchIndex(List<Match> matches, String matchName){
|
public static int findMatchIndex(List<Match> matches, String matchName){
|
||||||
for (int i = 0; i < matches.size(); i++) {
|
for (int i = 0; i < matches.size(); i++) {
|
||||||
if (matches.get(i).matchCreator.equals(matchName)) {
|
if (matches.get(i).matchCreator.equals(matchName)) {
|
||||||
|
|
@ -94,42 +92,36 @@ public class Match {
|
||||||
return started;
|
return started;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Match findMatchByPlayer(String player){
|
public static Match findMatchByPlayerName(String player){
|
||||||
for (int i = 0; i < activeMatches.size(); i++) {
|
for (Match activeMatch : activeMatches) {
|
||||||
for (int j = 0; j < activeMatches.get(i).playersStatus.size(); j++) {
|
for (int j = 0; j < activeMatch.playersStatus.size(); j++) {
|
||||||
if (activeMatches.get(i).playersStatus.get(j).getKey().equals(player)) {
|
if (activeMatch.playersStatus.get(j).getKey().equals(player)) {
|
||||||
return activeMatches.get(i);
|
return activeMatch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* if (matches.get(i).matchCreator.equals(matchName)) {
|
|
||||||
return i;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startGame(){
|
public void startGame(){
|
||||||
this.started=true;
|
this.started = true;
|
||||||
threadPool.submit(new MatchTimeout(this));
|
matchTimeoutThread.submit(new MatchTimeout(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setScore(String player, Integer score){
|
public void setScore(String player, Integer score){
|
||||||
Match m = findMatchByPlayer(player);
|
Match m = findMatchByPlayerName(player);
|
||||||
m.printAll();
|
if(m!=null) {
|
||||||
|
|
||||||
for (int i = 0; i < m.playersScore.size(); i++) {
|
for (int i = 0; i < m.playersScore.size(); i++) {
|
||||||
if (m.playersScore.get(i).getKey().equals(player)) {
|
if (m.playersScore.get(i).getKey().equals(player)) {
|
||||||
m.playersScore.set(i, new Pair<String, Integer>(player, score));
|
m.playersScore.set(i, new Pair<>(player, score));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean allPlayersSendedHisScore(){
|
public Boolean allPlayersSendedHisScore(){
|
||||||
System.out.println(matchCreator);
|
for (Pair<String, Integer> player : playersScore) {
|
||||||
printAll();
|
if (player.getValue() == -1) {
|
||||||
for (int i = 0; i < playersScore.size(); i++) {
|
|
||||||
if (playersScore.get(i).getValue() == -1) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -139,24 +131,23 @@ public class Match {
|
||||||
public void setUndefinedScorePlayersToZero(){
|
public void setUndefinedScorePlayersToZero(){
|
||||||
for (int i = 0; i < playersScore.size(); i++) {
|
for (int i = 0; i < playersScore.size(); i++) {
|
||||||
if (playersScore.get(i).getValue() == -1) {
|
if (playersScore.get(i).getValue() == -1) {
|
||||||
playersScore.set(i, new Pair<String, Integer>(playersScore.get(i).getKey(), 0));
|
playersScore.set(i, new Pair<>(playersScore.get(i).getKey(), 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DefaultListModel<String> getMatchPlayersScoreAsStringList(){
|
public DefaultListModel<String> getMatchPlayersScoreAsStringList(){
|
||||||
DefaultListModel<String> l = new DefaultListModel<>();
|
DefaultListModel<String> l = new DefaultListModel<>();
|
||||||
for (int i = 0; i < playersScore.size(); i++) {
|
for (Pair<String, Integer> player : playersScore) {
|
||||||
l.addElement(playersScore.get(i).getKey() + ":" + playersScore.get(i).getValue());
|
l.addElement(player.getKey() + ":" + player.getValue());
|
||||||
}
|
}
|
||||||
return l;
|
return l;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private int generateMulticastId(){
|
private int generateMulticastId(){
|
||||||
return GameServer.multicastID++;
|
return MessageService.multicastID++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLetters(DefaultListModel<String> letters){
|
public void setLetters(DefaultListModel<String> letters){
|
||||||
this.letters = letters;
|
this.letters = letters;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,30 +1,23 @@
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.servers;
|
||||||
|
|
||||||
import com.sun.org.apache.xpath.internal.operations.Bool;
|
import com.texttwist.server.services.SessionsService;
|
||||||
import com.texttwist.client.App;
|
|
||||||
import com.texttwist.server.models.Match;
|
import com.texttwist.server.models.Match;
|
||||||
import com.texttwist.server.tasks.*;
|
import com.texttwist.server.tasks.*;
|
||||||
import constants.Config;
|
|
||||||
import javafx.util.Pair;
|
|
||||||
import models.Message;
|
import models.Message;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.DatagramPacket;
|
|
||||||
import java.net.DatagramSocket;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.MulticastSocket;
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.channels.DatagramChannel;
|
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
import static com.texttwist.server.components.GameServer.activeMatches;
|
import static com.texttwist.server.services.MessageService.activeMatches;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 18/06/2017.
|
* Author: Lorenzo Iovino on 18/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class ThreadProxy implements Callable<Boolean> {
|
public class ProxyDispatcher implements Callable<Boolean> {
|
||||||
protected final ExecutorService threadPool = Executors.newCachedThreadPool();
|
protected final ExecutorService threadPool = Executors.newCachedThreadPool();
|
||||||
private final Message request;
|
private final Message request;
|
||||||
private final SocketChannel socketChannel;
|
private final SocketChannel socketChannel;
|
||||||
|
|
@ -32,7 +25,7 @@ public class ThreadProxy implements Callable<Boolean> {
|
||||||
boolean matchNotAvailable =false;
|
boolean matchNotAvailable =false;
|
||||||
|
|
||||||
|
|
||||||
ThreadProxy(Message request, SocketChannel socketChannel, ByteBuffer bufferMessage) {
|
public ProxyDispatcher(Message request, SocketChannel socketChannel, ByteBuffer bufferMessage) {
|
||||||
this.request = request;
|
this.request = request;
|
||||||
this.socketChannel = socketChannel;
|
this.socketChannel = socketChannel;
|
||||||
this.bufferMessage = bufferMessage;
|
this.bufferMessage = bufferMessage;
|
||||||
|
|
@ -43,7 +36,7 @@ public class ThreadProxy implements Callable<Boolean> {
|
||||||
public Boolean call() {
|
public Boolean call() {
|
||||||
bufferMessage = ByteBuffer.allocate(1024);
|
bufferMessage = ByteBuffer.allocate(1024);
|
||||||
byte[] byteMessage = null;
|
byte[] byteMessage = null;
|
||||||
if(SessionsManager.getInstance().isValidToken(request.token)){
|
if(SessionsService.getInstance().isValidToken(request.token)){
|
||||||
switch(request.message){
|
switch(request.message){
|
||||||
case "START_GAME":
|
case "START_GAME":
|
||||||
Future<Boolean> onlineUsers = threadPool.submit(new CheckOnlineUsers(request.data));
|
Future<Boolean> onlineUsers = threadPool.submit(new CheckOnlineUsers(request.data));
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.services;
|
||||||
|
|
||||||
import models.User;
|
import models.User;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -6,21 +6,22 @@ import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 18/06/2017.
|
* Author: Lorenzo Iovino on 18/06/2017.
|
||||||
|
* Description: AccountsService
|
||||||
*/
|
*/
|
||||||
public class AccountsManager {
|
public class AccountsService {
|
||||||
|
|
||||||
public List<User> users = Collections.synchronizedList(new ArrayList<User>());
|
public List<User> users = Collections.synchronizedList(new ArrayList<User>());
|
||||||
|
|
||||||
private static class Holder {
|
private static class Holder {
|
||||||
static final AccountsManager INSTANCE = new AccountsManager();
|
static final AccountsService INSTANCE = new AccountsService();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AccountsManager getInstance() {
|
public static AccountsService getInstance() {
|
||||||
return AccountsManager.Holder.INSTANCE;
|
return AccountsService.Holder.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AccountsManager(){
|
private AccountsService(){
|
||||||
List<Serializable> l = JedisService.get("users");
|
List<Serializable> l = JedisService.get("users");
|
||||||
for(int i=0; i<l.size(); i++) {
|
for(int i=0; i<l.size(); i++) {
|
||||||
users.add((User) l.get(i));
|
users.add((User) l.get(i));
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.services;
|
||||||
|
|
||||||
import com.texttwist.server.Server;
|
import com.texttwist.server.Server;
|
||||||
import interfaces.IAuth;
|
import interfaces.IAuth;
|
||||||
|
|
@ -13,24 +13,25 @@ import java.security.SecureRandom;
|
||||||
import static com.texttwist.server.Server.notificationServer;
|
import static com.texttwist.server.Server.notificationServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 15/06/2017.
|
* Author: Lorenzo Iovino on 15/06/2017.
|
||||||
|
* Description: AuthService
|
||||||
*/
|
*/
|
||||||
public class Auth extends UnicastRemoteObject implements IAuth {
|
public class AuthService extends UnicastRemoteObject implements IAuth {
|
||||||
|
|
||||||
private SecureRandom random = new SecureRandom();
|
private SecureRandom random = new SecureRandom();
|
||||||
public int serverPort = 9999;
|
public int serverPort = 9999;
|
||||||
|
|
||||||
|
|
||||||
public Auth(int serverPort) throws RemoteException{
|
public AuthService(int serverPort) throws RemoteException{
|
||||||
this.serverPort=serverPort;
|
this.serverPort=serverPort;
|
||||||
Server.logger.write("Auth Service running at "+serverPort+" port...");
|
Server.logger.write("AuthService Service running at "+serverPort+" port...");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response register(String userName, String password) throws RemoteException {
|
public Response register(String userName, String password) throws RemoteException {
|
||||||
Server.logger.write("Invoked register with username=" + userName + " AND " + " password=" + password);
|
Server.logger.write("Invoked register with username=" + userName + " AND " + " password=" + password);
|
||||||
if ((userName != null && !userName.isEmpty()) && (password != null && !password.equals(""))) {
|
if ((userName != null && !userName.isEmpty()) && (password != null && !password.equals(""))) {
|
||||||
if(AccountsManager.getInstance().register(userName, password)){
|
if(AccountsService.getInstance().register(userName, password)){
|
||||||
Server.logger.write("Registration successfull");
|
Server.logger.write("Registration successfull");
|
||||||
return new Response("Registration successfull", 200, null);
|
return new Response("Registration successfull", 200, null);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -45,11 +46,11 @@ public class Auth extends UnicastRemoteObject implements IAuth {
|
||||||
public Response login(String userName, String password) throws RemoteException {
|
public Response login(String userName, String password) throws RemoteException {
|
||||||
Server.logger.write("Invoked login with username=" + userName + " AND " + " password=" + password);
|
Server.logger.write("Invoked login with username=" + userName + " AND " + " password=" + password);
|
||||||
if ((userName != null && !userName.isEmpty()) && (password != null && !password.equals(""))) {
|
if ((userName != null && !userName.isEmpty()) && (password != null && !password.equals(""))) {
|
||||||
if(AccountsManager.getInstance().exists(userName) && AccountsManager.getInstance().checkPassword(userName, password)) {
|
if(AccountsService.getInstance().exists(userName) && AccountsService.getInstance().checkPassword(userName, password)) {
|
||||||
JsonObject data = new JsonObject();
|
JsonObject data = new JsonObject();
|
||||||
String token = nextSessionId();
|
String token = nextSessionId();
|
||||||
data.put("token", token);
|
data.put("token", token);
|
||||||
SessionsManager.getInstance().add(userName,token);
|
SessionsService.getInstance().add(userName,token);
|
||||||
Server.logger.write("Login successfull");
|
Server.logger.write("Login successfull");
|
||||||
return new Response("Login successfull", 200, data);
|
return new Response("Login successfull", 200, data);
|
||||||
}
|
}
|
||||||
|
|
@ -64,14 +65,14 @@ public class Auth extends UnicastRemoteObject implements IAuth {
|
||||||
notificationServer.unregisterForCallback(stub);
|
notificationServer.unregisterForCallback(stub);
|
||||||
|
|
||||||
if ((userName != null && !userName.isEmpty()) && (token != null && !token.isEmpty())) {
|
if ((userName != null && !userName.isEmpty()) && (token != null && !token.isEmpty())) {
|
||||||
boolean res = SessionsManager.getInstance().remove(userName);
|
boolean res = SessionsService.getInstance().remove(userName);
|
||||||
if(res) {
|
if(res) {
|
||||||
Server.logger.write("Logout successfull");
|
Server.logger.write("Logout successfull");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SessionsManager.getInstance().remove(userName);
|
SessionsService.getInstance().remove(userName);
|
||||||
Server.logger.write("Logout successfull (but something gone wrong)");
|
Server.logger.write("Logout successfull (but something gone wrong)");
|
||||||
return new Response("Logout successfull (but something gone wrong)", 200, null);
|
return new Response("Logout successfull (but something gone wrong)", 200, null);
|
||||||
}
|
}
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.services;
|
||||||
|
|
||||||
import models.User;
|
import models.User;
|
||||||
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.Jedis;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -12,7 +11,8 @@ import java.util.List;
|
||||||
import static com.texttwist.server.Server.jedisPool;
|
import static com.texttwist.server.Server.jedisPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 11/07/2017.
|
* Author: Lorenzo Iovino on 11/07/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class JedisService {
|
public class JedisService {
|
||||||
|
|
||||||
|
|
@ -1,14 +1,12 @@
|
||||||
|
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.services;
|
||||||
import com.texttwist.client.App;
|
|
||||||
import com.texttwist.server.Server;
|
import com.texttwist.server.Server;
|
||||||
|
import com.texttwist.server.servers.ProxyDispatcher;
|
||||||
import com.texttwist.server.models.Dictionary;
|
import com.texttwist.server.models.Dictionary;
|
||||||
import com.texttwist.server.models.Match;
|
import com.texttwist.server.models.Match;
|
||||||
import com.texttwist.server.tasks.ReceiveWords;
|
import com.texttwist.server.tasks.ReceiveWords;
|
||||||
import constants.Config;
|
import constants.Config;
|
||||||
import models.Message;
|
import models.Message;
|
||||||
import utilities.Logger;
|
|
||||||
|
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
@ -23,10 +21,15 @@ import java.util.concurrent.Executors;
|
||||||
import static java.nio.channels.SelectionKey.OP_ACCEPT;
|
import static java.nio.channels.SelectionKey.OP_ACCEPT;
|
||||||
import static java.nio.channels.SelectionKey.OP_READ;
|
import static java.nio.channels.SelectionKey.OP_READ;
|
||||||
|
|
||||||
public class GameServer implements Runnable{
|
|
||||||
|
/**
|
||||||
|
* Author: Lorenzo Iovino on 17/06/2017.
|
||||||
|
* Description: Game Server
|
||||||
|
*/
|
||||||
|
public class MessageService implements Runnable{
|
||||||
|
|
||||||
private int serverPort;
|
private int serverPort;
|
||||||
private ThreadProxy proxy;
|
private ProxyDispatcher proxy;
|
||||||
private ReceiveWords wordsReceiver;
|
private ReceiveWords wordsReceiver;
|
||||||
|
|
||||||
private DatagramChannel datagramChannel;
|
private DatagramChannel datagramChannel;
|
||||||
|
|
@ -43,7 +46,7 @@ public class GameServer implements Runnable{
|
||||||
public static List<Match> activeMatches = Collections.synchronizedList(new ArrayList<>());
|
public static List<Match> activeMatches = Collections.synchronizedList(new ArrayList<>());
|
||||||
public static Integer multicastID = 4000;
|
public static Integer multicastID = 4000;
|
||||||
|
|
||||||
public GameServer(int port){
|
public MessageService(int port){
|
||||||
this.serverPort = port;
|
this.serverPort = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,9 +104,9 @@ public class GameServer implements Runnable{
|
||||||
String line = new String(bufferMessages.array(), bufferMessages.position(), bufferMessages.remaining());
|
String line = new String(bufferMessages.array(), bufferMessages.position(), bufferMessages.remaining());
|
||||||
System.out.println(line);
|
System.out.println(line);
|
||||||
if (line.startsWith("MESSAGE")) {
|
if (line.startsWith("MESSAGE")) {
|
||||||
SessionsManager.getInstance().printAll();
|
SessionsService.getInstance().printAll();
|
||||||
Message msg = Message.toMessage(line);
|
Message msg = Message.toMessage(line);
|
||||||
proxy = new ThreadProxy(msg, client, bufferMessages);
|
proxy = new ProxyDispatcher(msg, client, bufferMessages);
|
||||||
threadPool.submit(proxy);
|
threadPool.submit(proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.texttwist.server.components;
|
package com.texttwist.server.services;
|
||||||
|
|
||||||
import interfaces.INotificationClient;
|
import interfaces.INotificationClient;
|
||||||
import interfaces.INotificationServer;
|
import interfaces.INotificationServer;
|
||||||
|
|
@ -11,12 +11,13 @@ import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 19/06/2017.
|
* Author: Lorenzo Iovino on 19/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class NotificationServer implements INotificationServer {
|
public class NotificationService implements INotificationServer {
|
||||||
|
|
||||||
private List<INotificationClient> clients;
|
private List<INotificationClient> clients;
|
||||||
public NotificationServer() throws RemoteException {
|
public NotificationService() throws RemoteException {
|
||||||
super();
|
super();
|
||||||
clients = new ArrayList<>();
|
clients = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
package com.texttwist.server.services;
|
||||||
|
import models.Session;
|
||||||
|
import models.User;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author: Lorenzo Iovino on 17/06/2017.
|
||||||
|
* Description: SessionsService. It is a singleton that provides the model and methods for manage sessions
|
||||||
|
*/
|
||||||
|
public class SessionsService {
|
||||||
|
|
||||||
|
private List<Session> sessions = Collections.synchronizedList(new ArrayList<Session>());
|
||||||
|
|
||||||
|
private static class Holder {
|
||||||
|
static final SessionsService INSTANCE = new SessionsService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SessionsService getInstance() {
|
||||||
|
return Holder.INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Session getSession(String userName) {
|
||||||
|
for (Session elem : sessions) {
|
||||||
|
if (elem.account.userName.equals(userName)) {
|
||||||
|
return elem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SessionsService(){}
|
||||||
|
|
||||||
|
public boolean add(String userName, String token) {
|
||||||
|
remove(userName);
|
||||||
|
return sessions.add(new Session(new User(userName,"",0), token));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printAll(){
|
||||||
|
for (Session elem : sessions) {
|
||||||
|
System.out.println(elem.account.userName + " | " + elem.token);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean remove(String userName){
|
||||||
|
if(exists(userName)) {
|
||||||
|
Session s = getSession(userName);
|
||||||
|
if(s != null) {
|
||||||
|
sessions.remove(s);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean exists(String userName) {
|
||||||
|
for (Session elem : sessions) {
|
||||||
|
if (elem.account.userName.equals(userName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValidToken(String token) {
|
||||||
|
for (Session session : sessions) {
|
||||||
|
if (session.token.equals(token)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.texttwist.server.components.SessionsManager;
|
import com.texttwist.server.services.SessionsService;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 19/06/2017.
|
* Author: Lorenzo Iovino on 19/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class CheckOnlineUsers implements Callable<Boolean> {
|
public class CheckOnlineUsers implements Callable<Boolean> {
|
||||||
private final DefaultListModel<String> users;
|
private final DefaultListModel<String> users;
|
||||||
|
|
@ -18,7 +19,7 @@ public class CheckOnlineUsers implements Callable<Boolean> {
|
||||||
@Override
|
@Override
|
||||||
public Boolean call() throws Exception {
|
public Boolean call() throws Exception {
|
||||||
for(int i = 0; i < users.size(); i++){
|
for(int i = 0; i < users.size(); i++){
|
||||||
if(!(SessionsManager.getInstance().exists(users.get(i)))){
|
if(!(SessionsService.getInstance().exists(users.get(i)))){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,16 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.texttwist.server.components.AccountsManager;
|
import com.texttwist.server.services.AccountsService;
|
||||||
import com.texttwist.server.components.JedisService;
|
import com.texttwist.server.services.JedisService;
|
||||||
import models.User;
|
import models.User;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 28/06/2017.
|
* Author: Lorenzo Iovino on 28/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class ComputeHighscores implements Callable<DefaultListModel<String>> {
|
public class ComputeHighscores implements Callable<DefaultListModel<String>> {
|
||||||
|
|
||||||
|
|
@ -21,16 +20,16 @@ public class ComputeHighscores implements Callable<DefaultListModel<String>> {
|
||||||
public DefaultListModel<String> call() throws Exception {
|
public DefaultListModel<String> call() throws Exception {
|
||||||
DefaultListModel<String> l = new DefaultListModel<>();
|
DefaultListModel<String> l = new DefaultListModel<>();
|
||||||
|
|
||||||
AccountsManager.getInstance().users.sort(new Comparator<User>() {
|
AccountsService.getInstance().users.sort(new Comparator<User>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(User o1, User o2) {
|
public int compare(User o1, User o2) {
|
||||||
return o2.score.compareTo(o1.score);
|
return o2.score.compareTo(o1.score);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
JedisService.removeAll("users");
|
JedisService.removeAll("users");
|
||||||
for(int i =0; i< AccountsManager.getInstance().users.size(); i++){
|
for(int i = 0; i< AccountsService.getInstance().users.size(); i++){
|
||||||
l.addElement(AccountsManager.getInstance().users.get(i).userName+":"+AccountsManager.getInstance().users.get(i).score);
|
l.addElement(AccountsService.getInstance().users.get(i).userName+":"+ AccountsService.getInstance().users.get(i).score);
|
||||||
JedisService.add("users",AccountsManager.getInstance().users.get(i));
|
JedisService.add("users", AccountsService.getInstance().users.get(i));
|
||||||
}
|
}
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,15 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
import com.texttwist.client.App;
|
import com.texttwist.server.services.AccountsService;
|
||||||
import com.texttwist.server.components.AccountsManager;
|
|
||||||
import com.texttwist.server.components.JedisService;
|
|
||||||
import com.texttwist.server.models.Dictionary;
|
import com.texttwist.server.models.Dictionary;
|
||||||
import com.texttwist.server.models.Match;
|
import com.texttwist.server.models.Match;
|
||||||
import constants.Config;
|
|
||||||
import models.Message;
|
|
||||||
import models.User;
|
import models.User;
|
||||||
import redis.clients.jedis.Jedis;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.net.DatagramPacket;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.MulticastSocket;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import static com.texttwist.server.components.GameServer.activeMatches;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 27/06/2017.
|
* Author: Lorenzo Iovino on 27/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class ComputeScore implements Callable<Integer> {
|
public class ComputeScore implements Callable<Integer> {
|
||||||
|
|
||||||
|
|
@ -52,7 +41,7 @@ public class ComputeScore implements Callable<Integer> {
|
||||||
match.setScore(sender, score);
|
match.setScore(sender, score);
|
||||||
System.out.println(score);
|
System.out.println(score);
|
||||||
|
|
||||||
User u = AccountsManager.getInstance().findUser(sender);
|
User u = AccountsService.getInstance().findUser(sender);
|
||||||
u.addScore(score);
|
u.addScore(score);
|
||||||
|
|
||||||
if(match.allPlayersSendedHisScore()) {
|
if(match.allPlayersSendedHisScore()) {
|
||||||
|
|
@ -61,7 +50,7 @@ public class ComputeScore implements Callable<Integer> {
|
||||||
System.out.println("MATCH TIMEOUT CANCELLATO");
|
System.out.println("MATCH TIMEOUT CANCELLATO");
|
||||||
|
|
||||||
match.setUndefinedScorePlayersToZero();
|
match.setUndefinedScorePlayersToZero();
|
||||||
match.sendScores();
|
new SendScores(match).call();
|
||||||
|
|
||||||
}
|
}
|
||||||
return score;
|
return score;
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,13 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.texttwist.server.components.GameServer;
|
import com.texttwist.server.services.MessageService;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.channels.FileChannel;
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.nio.file.*;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 25/06/2017.
|
* Author: Lorenzo Iovino on 25/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class GenerateLetters implements Callable<DefaultListModel<String>> {
|
public class GenerateLetters implements Callable<DefaultListModel<String>> {
|
||||||
|
|
||||||
|
|
@ -23,7 +20,7 @@ public class GenerateLetters implements Callable<DefaultListModel<String>> {
|
||||||
public DefaultListModel<String> call() throws Exception {
|
public DefaultListModel<String> call() throws Exception {
|
||||||
DefaultListModel<String> l = new DefaultListModel<String>();
|
DefaultListModel<String> l = new DefaultListModel<String>();
|
||||||
|
|
||||||
String word = GameServer.dict.getRandomWord(6, 7);
|
String word = MessageService.dict.getRandomWord(6, 7);
|
||||||
for (int i = 0;i < word.length(); i++){
|
for (int i = 0;i < word.length(); i++){
|
||||||
l.addElement(String.valueOf(word.charAt(i)));
|
l.addElement(String.valueOf(word.charAt(i)));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,11 @@ import javafx.util.Pair;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import static com.texttwist.server.components.GameServer.activeMatches;
|
import static com.texttwist.server.services.MessageService.activeMatches;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 23/06/2017.
|
* Author: Lorenzo Iovino on 23/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class JoinMatch implements Callable<Boolean> {
|
public class JoinMatch implements Callable<Boolean> {
|
||||||
public final String matchName;
|
public final String matchName;
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,14 @@ public class JoinTimeout implements Callable<Boolean> {
|
||||||
@Override
|
@Override
|
||||||
public Boolean call() throws Exception {
|
public Boolean call() throws Exception {
|
||||||
try {
|
try {
|
||||||
Thread.currentThread().sleep(7*60*1000);
|
Thread.currentThread().sleep(1*60*1000);
|
||||||
System.out.println("TIMEOUTTTT");
|
System.out.println("TIMEOUTTTT");
|
||||||
|
|
||||||
if(match.joinTimeout) {
|
if(match.joinTimeout) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
match.joinTimeout=true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,13 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.sun.org.apache.xpath.internal.operations.Bool;
|
|
||||||
import com.texttwist.server.models.Match;
|
import com.texttwist.server.models.Match;
|
||||||
import constants.Config;
|
import constants.Config;
|
||||||
import models.Message;
|
|
||||||
|
|
||||||
import java.net.DatagramPacket;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.MulticastSocket;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import static com.texttwist.server.components.GameServer.activeMatches;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 27/06/2017.
|
* Author: Lorenzo Iovino on 27/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class MatchTimeout implements Callable<Boolean> {
|
public class MatchTimeout implements Callable<Boolean> {
|
||||||
|
|
||||||
|
|
@ -26,12 +20,12 @@ public class MatchTimeout implements Callable<Boolean> {
|
||||||
@Override
|
@Override
|
||||||
public Boolean call() throws Exception {
|
public Boolean call() throws Exception {
|
||||||
try {
|
try {
|
||||||
Thread.currentThread().sleep(5*60*1000); //TODO 5*60*1000
|
Thread.currentThread().sleep(Config.sendWordsTimeout);
|
||||||
match.setUndefinedScorePlayersToZero();
|
match.setUndefinedScorePlayersToZero();
|
||||||
|
|
||||||
if(match.matchTimeout) {
|
if(match.matchTimeout) {
|
||||||
System.out.println("SEND BROADCAST BECAUSE TIMEOUT");
|
System.out.println("SEND BROADCAST BECAUSE TIMEOUT");
|
||||||
match.sendScores();
|
new SendScores(match).call();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.texttwist.server.components.SessionsManager;
|
import com.texttwist.server.services.SessionsService;
|
||||||
import com.texttwist.server.models.Match;
|
import com.texttwist.server.models.Match;
|
||||||
import constants.Config;
|
import constants.Config;
|
||||||
import models.Message;
|
import models.Message;
|
||||||
|
|
@ -14,7 +14,8 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 27/06/2017.
|
* Author: Lorenzo Iovino on 27/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class ReceiveWords implements Callable<Boolean>{
|
public class ReceiveWords implements Callable<Boolean>{
|
||||||
|
|
||||||
|
|
@ -53,9 +54,9 @@ public class ReceiveWords implements Callable<Boolean>{
|
||||||
System.out.println(rcv);
|
System.out.println(rcv);
|
||||||
if (rcv.startsWith("MESSAGE")) {
|
if (rcv.startsWith("MESSAGE")) {
|
||||||
msg = Message.toMessage(rcv);
|
msg = Message.toMessage(rcv);
|
||||||
if(SessionsManager.getInstance().isValidToken(msg.token)) {
|
if(SessionsService.getInstance().isValidToken(msg.token)) {
|
||||||
System.out.println(msg.sender);
|
System.out.println(msg.sender);
|
||||||
Match match = Match.findMatchByPlayer(msg.sender);
|
Match match = Match.findMatchByPlayerName(msg.sender);
|
||||||
threadPool.submit(new ComputeScore(msg.sender, msg.data, match));
|
threadPool.submit(new ComputeScore(msg.sender, msg.data, match));
|
||||||
} else {
|
} else {
|
||||||
threadPool.submit(new TokenInvalid(msg.sender, socketChannel, bufferMessages));
|
threadPool.submit(new TokenInvalid(msg.sender, socketChannel, bufferMessages));
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,13 @@
|
||||||
package com.texttwist.server.tasks;
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
import com.texttwist.server.Server;
|
import com.texttwist.server.Server;
|
||||||
import com.texttwist.server.components.NotificationServer;
|
|
||||||
import com.texttwist.server.components.SessionsManager;
|
|
||||||
import constants.Config;
|
|
||||||
import interfaces.INotificationServer;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.rmi.registry.LocateRegistry;
|
|
||||||
import java.rmi.registry.Registry;
|
|
||||||
import java.rmi.server.UnicastRemoteObject;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 19/06/2017.
|
* Author: Lorenzo Iovino on 19/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class SendInvitations implements Callable<Boolean> {
|
public class SendInvitations implements Callable<Boolean> {
|
||||||
private DefaultListModel<String> users;
|
private DefaultListModel<String> users;
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ import java.nio.channels.SocketChannel;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 27/06/2017.
|
* Author: Lorenzo Iovino on 27/06/2017.
|
||||||
|
* Description: Jedis Service
|
||||||
*/
|
*/
|
||||||
public class SendMessageToAllPlayers implements Callable<Boolean> {
|
public class SendMessageToAllPlayers implements Callable<Boolean> {
|
||||||
|
|
||||||
|
|
|
||||||
46
Server/src/com/texttwist/server/tasks/SendScores.java
Normal file
46
Server/src/com/texttwist/server/tasks/SendScores.java
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.texttwist.server.tasks;
|
||||||
|
|
||||||
|
import com.texttwist.server.models.Match;
|
||||||
|
import constants.Config;
|
||||||
|
import models.Message;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.MulticastSocket;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
|
import static com.texttwist.server.services.MessageService.activeMatches;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by loke on 13/07/2017.
|
||||||
|
*/
|
||||||
|
public class SendScores implements Callable<Void> {
|
||||||
|
|
||||||
|
private Match match;
|
||||||
|
|
||||||
|
public SendScores(Match match){
|
||||||
|
this.match = match;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void call() throws Exception {
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
System.out.println("SENDING");
|
||||||
|
Message msg = new Message("FINALSCORE", "SERVER", "", match.getMatchPlayersScoreAsStringList());
|
||||||
|
|
||||||
|
MulticastSocket multicastSocket = null;
|
||||||
|
try {
|
||||||
|
multicastSocket = new MulticastSocket(match.multicastId);
|
||||||
|
InetAddress ia = InetAddress.getByName(Config.ScoreMulticastServerURI);
|
||||||
|
DatagramPacket hi = new DatagramPacket(msg.toString().getBytes(), msg.toString().length(), ia, match.multicastId);
|
||||||
|
multicastSocket.send(hi);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
activeMatches.remove(Match.findMatchIndex(activeMatches, match.matchCreator));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,12 +5,12 @@ import models.Message;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.channels.Channel;
|
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by loke on 11/07/2017.
|
* Author: Lorenzo Iovino on 11/07/2017.
|
||||||
|
* Description: Task: Token Invalid Service
|
||||||
*/
|
*/
|
||||||
public class TokenInvalid implements Callable<Boolean> {
|
public class TokenInvalid implements Callable<Boolean> {
|
||||||
private String sender;
|
private String sender;
|
||||||
|
|
@ -25,9 +25,8 @@ public class TokenInvalid implements Callable<Boolean> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean call()throws Exception {
|
public Boolean call()throws Exception {
|
||||||
System.out.print("TOKEN NON VALIDO");
|
Server.logger.write("TOKEN INVALID: TOKEN USED BY "+ sender+ " IS NOT VALID");
|
||||||
buffer = ByteBuffer.allocate(1024);
|
Message msg = new Message("TOKEN_NOT_VALID", "", null, new DefaultListModel<>());
|
||||||
Message msg = new Message("MATCH_NOT_AVAILABLE", "", null, new DefaultListModel<>());
|
|
||||||
buffer.clear();
|
buffer.clear();
|
||||||
byte[] byteMessage = msg.toString().getBytes();
|
byte[] byteMessage = msg.toString().getBytes();
|
||||||
buffer = ByteBuffer.wrap(byteMessage);
|
buffer = ByteBuffer.wrap(byteMessage);
|
||||||
|
|
|
||||||
|
|
@ -1296,3 +1296,162 @@ LOGGER (Server): Thu Jul 13 03:30:57 CEST 2017 - Invoked login with username=asd
|
||||||
LOGGER (Server): Thu Jul 13 03:30:57 CEST 2017 - Login successfull
|
LOGGER (Server): Thu Jul 13 03:30:57 CEST 2017 - Login successfull
|
||||||
LOGGER (Server): Thu Jul 13 03:31:02 CEST 2017 - Invoked login with username=a AND password=a
|
LOGGER (Server): Thu Jul 13 03:31:02 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
LOGGER (Server): Thu Jul 13 03:31:02 CEST 2017 - Login successfull
|
LOGGER (Server): Thu Jul 13 03:31:02 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:43 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:44 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:44 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:44 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:48 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:48 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:51 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 12:23:51 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:17 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:17 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:17 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:17 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:23 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:23 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:26 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 12:57:26 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:35 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:36 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:36 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:36 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:41 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:42 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:44 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:02:44 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:46 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:46 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:46 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:46 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:51 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:51 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:54 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:04:54 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:29 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:29 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:29 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:29 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:36 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:36 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:38 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:05:38 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:00 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:00 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:01 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:01 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:04 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:04 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:07 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:09:07 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:10 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:10 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:10 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:10 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:15 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:15 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:17 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:10:17 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:01 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:01 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:01 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:01 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:06 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:06 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:08 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:13:08 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:51 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:51 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:51 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:51 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:56 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:56 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:58 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:14:58 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:47 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:47 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:47 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:47 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:51 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:51 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:53 CEST 2017 - Invoked logout with username=a AND token=8e462nrn7or1750ik15gsm1ha2
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:53 CEST 2017 - Logout successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:53 CEST 2017 - Logout successfull (but something gone wrong)
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:55 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:15:55 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:16:02 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:16:02 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:30 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:30 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:30 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:30 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:35 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:35 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:37 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:19:37 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:43 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:43 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:43 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:43 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:49 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:49 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:52 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:53:52 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:25 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:25 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:25 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:25 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:37 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:37 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:41 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:41 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:46 CEST 2017 - Invoked login with username=asd AND password=sad
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:46 CEST 2017 - Login unsuccessfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:50 CEST 2017 - Invoked login with username=asd AND password=asd
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:50 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:55 CEST 2017 - Invoked login with username=dd AND password=dd
|
||||||
|
LOGGER (Server): Thu Jul 13 13:59:55 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:01:58 CEST 2017 - Invoked register with username=ss AND password=ss
|
||||||
|
LOGGER (Server): Thu Jul 13 14:01:58 CEST 2017 - Registration successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:00 CEST 2017 - Invoked login with username=ss AND password=ss
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:00 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:05 CEST 2017 - Invoked register with username=aa AND password=aa
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:05 CEST 2017 - Registration successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:08 CEST 2017 - Invoked login with username=aa AND password=aa
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:08 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:43 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:44 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:44 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:02:44 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:08 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:08 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:10 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:10 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:12 CEST 2017 - Invoked login with username=asd AND password=asd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:12 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:14 CEST 2017 - Invoked login with username=dd AND password=dd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:03:14 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:29 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:29 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:30 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:30 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:34 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:34 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:40 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:40 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:45 CEST 2017 - Invoked login with username=dd AND password=dd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:45 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:49 CEST 2017 - Invoked login with username=asd AND password=asd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:10:49 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:11 CEST 2017 - Services starting ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:11 CEST 2017 - AuthService Service running at 9999 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:11 CEST 2017 - Services started correctly ...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:11 CEST 2017 - GameService Service is running at 10000 port...
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:24 CEST 2017 - Invoked login with username=a AND password=a
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:24 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:26 CEST 2017 - Invoked login with username=b AND password=b
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:26 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:30 CEST 2017 - Invoked login with username=asd AND password=asd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:30 CEST 2017 - Login successfull
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:36 CEST 2017 - Invoked login with username=dd AND password=dd
|
||||||
|
LOGGER (Server): Thu Jul 13 14:14:36 CEST 2017 - Login successfull
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue