SUPER DUPER HYPER!!!

This commit is contained in:
Lorenzo Iovino 2017-07-09 16:45:46 +02:00
parent 3a528f307b
commit cb63402b9f
12 changed files with 2741 additions and 494 deletions

725
.idea/workspace.xml generated
View file

@ -6,28 +6,15 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="eb36c2e9-c6c6-48da-b007-cd41eccd9e5a" name="Default" comment=""> <list default="true" id="eb36c2e9-c6c6-48da-b007-cd41eccd9e5a" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/HomeController.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/HomeController.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/App.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/App.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/StartGame.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/StartGame.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Commons/src/constants/Config.java" afterPath="$PROJECT_DIR$/Commons/src/constants/Config.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForScore.java" afterPath="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForScore.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Commons/src/utilities/Logger.java" afterPath="$PROJECT_DIR$/Commons/src/utilities/Logger.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeHighscores.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeHighscores.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java" afterPath="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/client_1.log" afterPath="$PROJECT_DIR$/client_1.log" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/client_1.log" afterPath="$PROJECT_DIR$/client_1.log" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/server.log" afterPath="$PROJECT_DIR$/server.log" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/server.log" afterPath="$PROJECT_DIR$/server.log" />
</list> </list>
@ -40,7 +27,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="CoverageDataManager"> <component name="CoverageDataManager">
<SUITE FILE_PATH="coverage/TextTwist$Client.coverage" NAME="Client Coverage Results" MODIFIED="1499382812028" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <SUITE FILE_PATH="coverage/TextTwist$Client.coverage" NAME="Client Coverage Results" MODIFIED="1499596157248" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
<FILTER>com.texttwist.client.*</FILTER> <FILTER>com.texttwist.client.*</FILTER>
</SUITE> </SUITE>
<SUITE FILE_PATH="coverage/TextTwist$Main__1_.coverage" NAME="Main (1) Coverage Results" MODIFIED="1497438042403" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <SUITE FILE_PATH="coverage/TextTwist$Main__1_.coverage" NAME="Main (1) Coverage Results" MODIFIED="1497438042403" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
@ -50,107 +37,103 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="375"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
<file leaf-file-name="JoinMatch.java" pinned="false" current-in-tab="false"> <file leaf-file-name="ThreadProxy.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="388"> <state relative-caret-position="262">
<caret line="55" column="12" lean-forward="false" selection-start-line="55" selection-start-column="12" selection-end-line="55" selection-end-column="12" /> <caret line="150" column="52" lean-forward="true" selection-start-line="150" selection-start-column="52" selection-end-line="150" selection-end-column="52" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionsManager.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/SessionsManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="293">
<caret line="36" column="16" lean-forward="false" selection-start-line="36" selection-start-column="16" selection-end-line="36" selection-end-column="16" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="ComputeHighscores.java" pinned="false" current-in-tab="false"> <file leaf-file-name="Match.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeHighscores.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="63"> <state relative-caret-position="325">
<caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" /> <caret line="95" column="66" lean-forward="true" selection-start-line="95" selection-start-column="66" selection-end-line="95" selection-end-column="66" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="NotificationServer.java" pinned="false" current-in-tab="false"> <file leaf-file-name="ReceiveWords.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="514"> <state relative-caret-position="474">
<caret line="46" column="40" lean-forward="false" selection-start-line="46" selection-start-column="40" selection-end-line="46" selection-end-column="40" /> <caret line="60" column="47" lean-forward="true" selection-start-line="60" selection-start-column="47" selection-end-line="60" selection-end-column="47" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="WaitForScore.java" pinned="false" current-in-tab="true"> <file leaf-file-name="MatchTimeout.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForScore.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<marker date="1499435378808" expanded="true" signature="1960:2124" ph="{...}" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WaitForPlayers.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="587">
<caret line="94" column="0" lean-forward="true" selection-start-line="94" selection-start-column="0" selection-end-line="94" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GamePage.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/pages/GamePage.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="183">
<caret line="92" column="0" lean-forward="false" selection-start-line="92" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WaitForPlayers.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="294">
<caret line="26" column="44" lean-forward="false" selection-start-line="26" selection-start-column="44" selection-end-line="26" selection-end-column="44" /> <caret line="17" column="13" lean-forward="true" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="SendInvitations.java" pinned="false" current-in-tab="false"> <file leaf-file-name="GameServer.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="399"> <state relative-caret-position="716">
<caret line="29" column="44" lean-forward="false" selection-start-line="29" selection-start-column="44" selection-end-line="29" selection-end-column="44" /> <caret line="61" column="39" lean-forward="false" selection-start-line="61" selection-start-column="39" selection-end-line="61" selection-end-column="39" />
<folding>
<marker date="1499608543751" expanded="true" signature="4986:5015" ph="{...}" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SendWords.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="296">
<caret line="37" column="73" lean-forward="true" selection-start-line="37" selection-start-column="73" selection-end-line="37" selection-end-column="73" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="Server.java" pinned="false" current-in-tab="false"> <file leaf-file-name="ComputeScore.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/Server.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="514"> <state relative-caret-position="147">
<caret line="45" column="36" lean-forward="false" selection-start-line="45" selection-start-column="36" selection-end-line="45" selection-end-column="36" /> <caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="App.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/App.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="109">
<caret line="79" column="71" lean-forward="true" selection-start-line="79" selection-start-column="71" selection-end-line="79" selection-end-column="71" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SendMessageToAllPlayers.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="36" column="0" lean-forward="false" selection-start-line="36" selection-start-column="0" selection-end-line="36" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Config.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Commons/src/constants/Config.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="25" column="37" lean-forward="false" selection-start-line="25" selection-start-column="37" selection-end-line="25" selection-end-column="37" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -167,36 +150,36 @@
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>System.out.pr</find> <find>ma</find>
<find>System\.out\.println\(elem\.account\.userName \+ \&quot; \| \&quot; \+ elem\.token\)\;\n</find> <find>match</find>
<find>Systemout</find> <find>match.sta</find>
<find>Systemou</find> <find>match.star</find>
<find>Systemo</find> <find>match.start</find>
<find>Syst</find> <find>ne</find>
<find>Sys</find> <find>new Thr</find>
<find>G</find> <find>new Thre</find>
<find>System\.out\.println\(\&quot;SEtting score of \&quot; \+ m\.playersScore\.get\(i\)\.getKey\(\) \+ \&quot; to \&quot; \+ score\)\;\n</find> <find>F</find>
<find>Syste</find> <find>Future</find>
<find>System.</find> <find>si</find>
<find>System\.out\.println\(\&quot;Eccezione\&quot; \+ e\)\;\n</find> <find>singlethr</find>
<find>S</find> <find>singleth</find>
<find>System</find> <find>singlet</find>
<find>System.o</find> <find>single</find>
<find>System.out</find> <find>singleTh</find>
<find>n</find> <find>singleT</find>
<find>new client</find> <find>t</find>
<find>new client r</find> <find>threa</find>
<find>new client re</find> <find>threadsi</find>
<find>new client regi</find> <find>threads</find>
<find>l</find> <find>thr</find>
<find>login</find> <find>thread</find>
<find>TI</find> <find>threadp</find>
<find>TIMEOUT</find> <find>threadpo</find>
<find>ecc</find> <find>threadpool</find>
<find>ecce</find> <find>threadpool.</find>
<find>eccez</find> <find>bufferWo</find>
<find>eccezio</find> <find>datag</find>
<find>eccezion</find> <find>buffer</find>
</findStrings> </findStrings>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
@ -213,7 +196,6 @@
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/models/SessionService.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/models/SessionService.java" />
<option value="$PROJECT_DIR$/Commons/src/models/User.java" /> <option value="$PROJECT_DIR$/Commons/src/models/User.java" />
<option value="$PROJECT_DIR$/Commons/src/models/Session.java" /> <option value="$PROJECT_DIR$/Commons/src/models/Session.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/App.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/services/NotificationService.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/services/NotificationService.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/pages/HomePage.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/pages/HomePage.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/pages/Page.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/pages/Page.java" />
@ -233,34 +215,35 @@
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/AccountsManager.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/AccountsManager.java" />
<option value="$PROJECT_DIR$/Commons/src/models/Message.java" /> <option value="$PROJECT_DIR$/Commons/src/models/Message.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Dictionary.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Dictionary.java" />
<option value="$PROJECT_DIR$/Commons/src/constants/Config.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/Server.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/Server.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/services/AuthService.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/services/AuthService.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/Auth.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/Auth.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/SessionsManager.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/SessionsManager.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/HomeController.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/HomeController.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/StartGame.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/StartGame.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" />
<option value="$PROJECT_DIR$/Commons/src/utilities/Logger.java" /> <option value="$PROJECT_DIR$/Commons/src/utilities/Logger.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeHighscores.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeHighscores.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java" /> <option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForScore.java" /> <option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForScore.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java" />
<option value="$PROJECT_DIR$/Commons/src/constants/Config.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/App.java" />
<option value="$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java" />
<option value="$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java" />
</list> </list>
</option> </option>
</component> </component>
@ -315,90 +298,6 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scratches" />
<pane id="Scope">
<subPane subId="Changed Files">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="tasks">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="models">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="components">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<PATH> <PATH>
@ -731,6 +630,90 @@
</PATH> </PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="PackagesPane" />
<pane id="Scratches" />
<pane id="Scope">
<subPane subId="Changed Files">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="tasks">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="models">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="Server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="src">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="com/texttwist/server">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="components">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
@ -1251,46 +1234,46 @@
<workItem from="1499360675918" duration="23000" /> <workItem from="1499360675918" duration="23000" />
<workItem from="1499416872438" duration="7796000" /> <workItem from="1499416872438" duration="7796000" />
<workItem from="1499430785280" duration="4599000" /> <workItem from="1499430785280" duration="4599000" />
<workItem from="1499591762560" duration="13436000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="328382000" /> <option name="totallyTimeSpent" value="347868000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-9" y="-9" width="1938" height="1048" extended-state="6" /> <frame x="-9" y="-9" width="1938" height="1048" extended-state="6" />
<editor active="true" />
<layout> <layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39949432" sideWeight="0.5164706" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39846322" sideWeight="0.48352942" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32821077" sideWeight="0.49764705" order="10" side_tool="false" content_ui="tabs" /> <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32821077" sideWeight="0.49764705" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39949432" sideWeight="0.5164706" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="WINDOWED" visible="true" show_stripe_button="true" weight="0.4215148" sideWeight="0.6982353" order="2" side_tool="false" content_ui="tabs" x="979" y="111" width="908" height="418" /> <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="WINDOWED" visible="true" show_stripe_button="true" weight="0.4215148" sideWeight="0.6982353" order="2" side_tool="false" content_ui="tabs" x="1215" y="267" width="908" height="467" />
<window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32916668" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2203125" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2203125" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.49764705" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.49764705" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39846322" sideWeight="0.48352942" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32916668" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
</layout> </layout>
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
@ -1301,7 +1284,7 @@
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
<option name="time" value="104" /> <option name="time" value="106" />
</breakpoint-manager> </breakpoint-manager>
<watches-manager /> <watches-manager />
</component> </component>
@ -1310,18 +1293,6 @@
<option name="FILTER_TARGETS" value="false" /> <option name="FILTER_TARGETS" value="false" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/HighscoresController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="20" column="28" lean-forward="true" selection-start-line="20" selection-start-column="28" selection-end-line="20" selection-end-column="28" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#497#498#0" expanded="false" />
<element signature="e#554#555#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/RegisterController.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/RegisterController.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="189"> <state relative-caret-position="189">
@ -1375,13 +1346,11 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/GameController.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/controllers/GameController.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209"> <state relative-caret-position="105">
<caret line="37" column="22" lean-forward="false" selection-start-line="37" selection-start-column="22" selection-end-line="37" selection-end-column="22" /> <caret line="11" column="3" lean-forward="false" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
<folding> <folding>
<element signature="e#950#951#0" expanded="false" /> <element signature="e#732#733#0" expanded="false" />
<element signature="e#1026#1027#0" expanded="false" /> <element signature="e#783#784#0" expanded="false" />
<element signature="e#1064#1065#0" expanded="false" />
<element signature="e#1124#1125#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
@ -1427,14 +1396,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Commons/src/constants/Config.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="14" column="62" lean-forward="false" selection-start-line="14" selection-start-column="62" selection-end-line="14" selection-end-column="62" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/pages/MenuPage.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/pages/MenuPage.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105"> <state relative-caret-position="105">
@ -1451,14 +1412,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="17" column="16" lean-forward="false" selection-start-line="17" selection-start-column="11" selection-end-line="17" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Commons/src/interfaces/IAuth.java"> <entry file="file://$PROJECT_DIR$/Commons/src/interfaces/IAuth.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="189"> <state relative-caret-position="189">
@ -1499,14 +1452,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/App.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="51" column="47" lean-forward="false" selection-start-line="51" selection-start-column="47" selection-end-line="51" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Commons/src/interfaces/INotificationClient.java"> <entry file="file://$PROJECT_DIR$/Commons/src/interfaces/INotificationClient.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="189"> <state relative-caret-position="189">
@ -1515,14 +1460,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="249">
<caret line="177" column="44" lean-forward="true" selection-start-line="177" selection-start-column="44" selection-end-line="177" selection-end-column="44" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/InvitePlayers.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="671"> <state relative-caret-position="671">
@ -1547,14 +1484,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-32">
<caret line="42" column="0" lean-forward="false" selection-start-line="42" selection-start-column="0" selection-end-line="42" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/CheckOnlineUsers.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="294">
@ -1573,16 +1502,8 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/models/Game.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="293"> <state relative-caret-position="545">
<caret line="93" column="0" lean-forward="false" selection-start-line="93" selection-start-column="0" selection-end-line="93" selection-end-column="0" /> <caret line="108" column="30" lean-forward="false" selection-start-line="108" selection-start-column="30" selection-end-line="108" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="283">
<caret line="54" column="0" lean-forward="false" selection-start-line="54" selection-start-column="0" selection-end-line="54" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -1595,14 +1516,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="293">
<caret line="96" column="0" lean-forward="false" selection-start-line="96" selection-start-column="0" selection-end-line="96" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java"> <entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/FetchHighscore.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="692"> <state relative-caret-position="692">
@ -1611,40 +1524,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="283">
<caret line="52" column="16" lean-forward="false" selection-start-line="52" selection-start-column="16" selection-end-line="52" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="514">
<caret line="37" column="0" lean-forward="false" selection-start-line="37" selection-start-column="0" selection-end-line="37" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="231">
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="441">
<caret line="21" column="0" lean-forward="false" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/WaitForPlayers.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="294">
@ -1655,10 +1534,10 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinMatch.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="388"> <state relative-caret-position="504">
<caret line="55" column="12" lean-forward="false" selection-start-line="55" selection-start-column="12" selection-end-line="55" selection-end-column="12" /> <caret line="24" column="15" lean-forward="false" selection-start-line="24" selection-start-column="15" selection-end-line="24" selection-end-column="15" />
<folding> <folding>
<element signature="imports" expanded="true" /> <marker date="1499443678929" expanded="true" signature="2404:2431" ph="{...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
@ -1679,40 +1558,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/pages/GamePage.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="183">
<caret line="92" column="0" lean-forward="false" selection-start-line="92" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="587">
<caret line="94" column="0" lean-forward="true" selection-start-line="94" selection-start-column="0" selection-end-line="94" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/Server.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="514">
<caret line="45" column="36" lean-forward="false" selection-start-line="45" selection-start-column="36" selection-end-line="45" selection-end-column="36" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="399">
<caret line="29" column="44" lean-forward="false" selection-start-line="29" selection-start-column="44" selection-end-line="29" selection-end-column="44" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java"> <entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/NotificationServer.java">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="514"> <state relative-caret-position="514">
@ -1725,12 +1570,144 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210"> <state relative-caret-position="210">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" /> <caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/Server.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="357">
<caret line="29" column="57" lean-forward="false" selection-start-line="29" selection-start-column="57" selection-end-line="29" selection-end-column="57" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/WaitForPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="525">
<caret line="39" column="79" lean-forward="false" selection-start-line="39" selection-start-column="79" selection-end-line="39" selection-end-column="79" />
<folding> <folding>
<marker date="1499435378808" expanded="true" signature="1960:2124" ph="{...}" /> <element signature="imports" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/pages/GamePage.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="378">
<caret line="25" column="0" lean-forward="false" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/JoinTimeout.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="11" column="37" lean-forward="false" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Commons/src/constants/Config.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="25" column="37" lean-forward="false" selection-start-line="25" selection-start-column="37" selection-end-line="25" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendMessageToAllPlayers.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="36" column="0" lean-forward="false" selection-start-line="36" selection-start-column="0" selection-end-line="36" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/App.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="109">
<caret line="79" column="71" lean-forward="true" selection-start-line="79" selection-start-column="71" selection-end-line="79" selection-end-column="71" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/SendInvitations.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="424">
<caret line="32" column="48" lean-forward="true" selection-start-line="32" selection-start-column="48" selection-end-line="32" selection-end-column="48" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk1.8.0_131/src.zip!/java/util/concurrent/ExecutorService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="194">
<caret line="235" column="18" lean-forward="false" selection-start-line="235" selection-start-column="18" selection-end-line="235" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/models/Match.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="95" column="66" lean-forward="true" selection-start-line="95" selection-start-column="66" selection-end-line="95" selection-end-column="66" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/ThreadProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="262">
<caret line="150" column="52" lean-forward="true" selection-start-line="150" selection-start-column="52" selection-end-line="150" selection-end-column="52" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/MatchTimeout.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294">
<caret line="17" column="13" lean-forward="true" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/components/GameServer.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="716">
<caret line="61" column="39" lean-forward="false" selection-start-line="61" selection-start-column="39" selection-end-line="61" selection-end-column="39" />
<folding>
<marker date="1499608543751" expanded="true" signature="4986:5015" ph="{...}" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Client/src/com/texttwist/client/tasks/SendWords.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="296">
<caret line="37" column="73" lean-forward="true" selection-start-line="37" selection-start-column="73" selection-end-line="37" selection-end-column="73" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ComputeScore.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="147">
<caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Server/src/com/texttwist/server/tasks/ReceiveWords.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="474">
<caret line="60" column="47" lean-forward="true" selection-start-line="60" selection-start-column="47" selection-end-line="60" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
</component> </component>
<component name="masterDetails"> <component name="masterDetails">
<states> <states>

View file

@ -12,8 +12,11 @@ import utilities.Logger;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException; import java.rmi.NotBoundException;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
@ -67,6 +70,23 @@ public class App extends JFrame {
app = this; app = this;
HomePage home = new HomePage(this); HomePage home = new HomePage(this);
/* app.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
try {
authService.logout(App.session.account.userName);
System.out.println("LOGOUT BECAUSE WINDOW CLOSED");
} catch (RemoteException e1) {
e1.printStackTrace();
} catch (NotBoundException e1) {
e1.printStackTrace();
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
}
});*/
} }
public static Point getWindowsPosition(){ public static Point getWindowsPosition(){

View file

@ -29,32 +29,20 @@ public class SendWords extends SwingWorker<Void,Void> {
@Override @Override
public Void doInBackground() { public Void doInBackground() {
DatagramSocket clientSocket = null;
try { try {
InetAddress hostIP = InetAddress.getLocalHost(); InetSocketAddress myAddress = new InetSocketAddress(Config.WordsReceiverServerURI, Config.WordsReceiverServerPort);
InetSocketAddress myAddress =
new InetSocketAddress(hostIP, Config.WordsReceiverServerPort);
DatagramChannel datagramChannel = DatagramChannel.open(); DatagramChannel datagramChannel = DatagramChannel.open();
datagramChannel.bind(null); datagramChannel.bind(null);
ByteBuffer buffer = ByteBuffer.allocate(1024); ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.clear();
System.out.println("SENDER=" + App.session.account.userName);
Message msg = new Message("WORDS", App.session.account.userName, "", words); Message msg = new Message("WORDS", App.session.account.userName, "", words);
String sentence = msg.toString(); String sentence = msg.toString();
buffer.put(sentence.getBytes()); buffer.put(sentence.getBytes());
buffer.flip(); buffer.flip();
datagramChannel.send(buffer, myAddress); datagramChannel.send(buffer, myAddress);
buffer.clear(); System.out.println("WORDS INVIATE");
System.out.println(sentence);
/*clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(Config.WordsReceiverServerURI);
byte[] sendData = new byte[1024];
Message msg = new Message("WORDS", App.session.account.userName, "", words);
String sentence = msg.toString();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, Config.WordsReceiverServerPort);
clientSocket.send(sendPacket);
clientSocket.close();*/
return null; return null;
} catch (UnknownHostException e) { } catch (UnknownHostException e) {

View file

@ -23,7 +23,7 @@ public class Config {
public static String NotificationServerName ="notification"; public static String NotificationServerName ="notification";
public static int timeoutGame = 10; public static int timeoutGame = 5;
public static String getNotificationServerURI(){ public static String getNotificationServerURI(){

View file

@ -2,6 +2,7 @@
package com.texttwist.server.components; package com.texttwist.server.components;
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 constants.Config; import constants.Config;
import models.Message; import models.Message;
import utilities.Logger; import utilities.Logger;
@ -25,12 +26,14 @@ public class GameServer implements Runnable{
private int serverPort; private int serverPort;
private ThreadProxy proxy; private ThreadProxy proxy;
private ReceiveWords wordsReceiver;
private DatagramChannel datagramChannel; private DatagramChannel datagramChannel;
private Selector selector = null; private Selector selector = null;
private ExecutorService threadPool = Executors.newCachedThreadPool(); private ExecutorService threadPool = Executors.newCachedThreadPool();
private String dictionaryPath = "./Server/resources/dictionary"; private String dictionaryPath = "./Server/resources/dictionary";
public static Dictionary dict; public static Dictionary dict;
ByteBuffer bufferWords = ByteBuffer.allocate(1024);
public static List<Match> activeMatches = Collections.synchronizedList(new ArrayList<>()); public static List<Match> activeMatches = Collections.synchronizedList(new ArrayList<>());
@ -50,10 +53,13 @@ public class GameServer implements Runnable{
serverSocketChannel.configureBlocking(false); serverSocketChannel.configureBlocking(false);
serverSocketChannel.socket().bind(new InetSocketAddress(serverPort)); serverSocketChannel.socket().bind(new InetSocketAddress(serverPort));
serverSocketChannel.register(selector, OP_ACCEPT); serverSocketChannel.register(selector, OP_ACCEPT);
InetSocketAddress address = new InetSocketAddress(Config.WordsReceiverServerPort); InetSocketAddress address = new InetSocketAddress(Config.WordsReceiverServerURI,Config.WordsReceiverServerPort);
datagramChannel = DatagramChannel.open(); datagramChannel = DatagramChannel.open();
DatagramSocket datagramSocket = datagramChannel.socket(); datagramChannel.configureBlocking(true);
datagramSocket.bind(address); datagramChannel.connect(address);
wordsReceiver = new ReceiveWords(datagramChannel, bufferWords);
threadPool.submit(wordsReceiver);
Logger.write("GamePage Service is running at "+this.serverPort+" port..."); Logger.write("GamePage Service is running at "+this.serverPort+" port...");
} catch (IOException e) { } catch (IOException e) {
@ -91,8 +97,7 @@ public class GameServer implements Runnable{
if (line.startsWith("MESSAGE")) { if (line.startsWith("MESSAGE")) {
SessionsManager.getInstance().printAll(); SessionsManager.getInstance().printAll();
Message msg = Message.toMessage(line); Message msg = Message.toMessage(line);
ByteBuffer bufferWords = ByteBuffer.allocate(1024); proxy = new ThreadProxy(msg, client, bufferMessages);
proxy = new ThreadProxy(msg, client, datagramChannel, bufferWords);
threadPool.submit(proxy); threadPool.submit(proxy);
} }

View file

@ -1,5 +1,6 @@
package com.texttwist.server.components; package com.texttwist.server.components;
import com.sun.org.apache.xpath.internal.operations.Bool;
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 constants.Config;
@ -26,16 +27,15 @@ public class ThreadProxy 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;
private final DatagramChannel datagramChannel; private ByteBuffer bufferMessage;
private ByteBuffer buffer;
boolean matchNotAvailable =false; boolean matchNotAvailable =false;
ThreadProxy(Message request, SocketChannel socketChannel, DatagramChannel datagramChannel, ByteBuffer buffer){ ThreadProxy(Message request, SocketChannel socketChannel, ByteBuffer bufferMessage) {
this.request = request; this.request = request;
this.socketChannel = socketChannel; this.socketChannel = socketChannel;
this.datagramChannel = datagramChannel; this.bufferMessage = bufferMessage;
this.buffer = buffer;
} }
@ -45,7 +45,7 @@ public class ThreadProxy implements Callable<Boolean> {
@Override @Override
public Boolean call() { public Boolean call() {
ByteBuffer buffer = ByteBuffer.allocate(1024); bufferMessage = ByteBuffer.allocate(1024);
byte[] byteMessage = null; byte[] byteMessage = null;
if(isValidToken(request.token)){ if(isValidToken(request.token)){
switch(request.message){ switch(request.message){
@ -76,13 +76,14 @@ public class ThreadProxy implements Callable<Boolean> {
//NON FARE NULLA, ASPETTA GLI ALTRI //NON FARE NULLA, ASPETTA GLI ALTRI
Message message = new Message("INVITES_ALL_SENDED", "", "", new DefaultListModel<String>()); Message message = new Message("INVITES_ALL_SENDED", "", "", new DefaultListModel<String>());
byteMessage = message.toString().getBytes(); byteMessage = message.toString().getBytes();
buffer = ByteBuffer.wrap(byteMessage); bufferMessage = ByteBuffer.wrap(byteMessage);
socketChannel.write(buffer); socketChannel.write(bufferMessage);
Future<Boolean> joinTimeout = threadPool.submit(new JoinTimeout(match)); Future<Boolean> joinTimeout = threadPool.submit(new JoinTimeout(match));
Boolean joinTimeoutRes = joinTimeout.get(); match.timeout = joinTimeout;
if(!joinTimeoutRes){ joinTimeout.get();
if(match.joinTimeout){
Future<Boolean> sendMessageJoinTimeout = threadPool.submit( Future<Boolean> sendMessageJoinTimeout = threadPool.submit(
new SendMessageToAllPlayers(match, new Message("JOIN_TIMEOUT", "", "", new DefaultListModel<>()), socketChannel)); new SendMessageToAllPlayers(match, new Message("JOIN_TIMEOUT", "", "", new DefaultListModel<>()), socketChannel));
Boolean sendMessageJoinTimeoutRes = sendMessageJoinTimeout.get(); Boolean sendMessageJoinTimeoutRes = sendMessageJoinTimeout.get();
@ -90,6 +91,8 @@ public class ThreadProxy implements Callable<Boolean> {
activeMatches.remove(Match.findMatchIndex(activeMatches,match.matchCreator)); activeMatches.remove(Match.findMatchIndex(activeMatches,match.matchCreator));
return sendMessageJoinTimeoutRes; return sendMessageJoinTimeoutRes;
} }
} else {
System.out.println("TIMEOUT FINITO SENZA EFFETTI");
} }
} }
@ -105,9 +108,9 @@ public class ThreadProxy implements Callable<Boolean> {
Message message = new Message("USER_NOT_ONLINE", "", "", new DefaultListModel<String>()); Message message = new Message("USER_NOT_ONLINE", "", "", new DefaultListModel<String>());
byteMessage = new String(message.toString()).getBytes(); byteMessage = new String(message.toString()).getBytes();
buffer.clear(); bufferMessage.clear();
buffer = ByteBuffer.wrap(byteMessage); bufferMessage = ByteBuffer.wrap(byteMessage);
this.socketChannel.write(buffer); this.socketChannel.write(bufferMessage);
break; break;
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -125,9 +128,9 @@ public class ThreadProxy implements Callable<Boolean> {
Message message = new Message("HIGHSCORES", "", "", computeHighscoresRes); Message message = new Message("HIGHSCORES", "", "", computeHighscoresRes);
byteMessage = message.toString().getBytes(); byteMessage = message.toString().getBytes();
buffer = ByteBuffer.wrap(byteMessage); bufferMessage = ByteBuffer.wrap(byteMessage);
try { try {
socketChannel.write(buffer); socketChannel.write(bufferMessage);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -145,7 +148,7 @@ public class ThreadProxy implements Callable<Boolean> {
Boolean joinMatchRes = joinMatch.get(); Boolean joinMatchRes = joinMatch.get();
if(joinMatchRes){ if(joinMatchRes){
if(match.joinTimeout == false) { if(!match.joinTimeout) {
Future<DefaultListModel<String>> generateLetters = threadPool.submit(new GenerateLetters()); Future<DefaultListModel<String>> generateLetters = threadPool.submit(new GenerateLetters());
match.setLetters(generateLetters.get()); match.setLetters(generateLetters.get());
match.letters.addElement(String.valueOf(match.multicastId)); match.letters.addElement(String.valueOf(match.multicastId));
@ -153,47 +156,24 @@ public class ThreadProxy implements Callable<Boolean> {
for (int i = 0; i < match.playersSocket.size(); i++) { for (int i = 0; i < match.playersSocket.size(); i++) {
SocketChannel socketClient = match.playersSocket.get(i).getValue(); SocketChannel socketClient = match.playersSocket.get(i).getValue();
if (socketClient != null) { if (socketClient != null) {
buffer.clear(); bufferMessage.clear();
Message message = new Message("GAME_STARTED", "", "", match.letters); Message message = new Message("GAME_STARTED", "", "", match.letters);
match.startGame(); match.startGame();
match.timeout.cancel(true);
System.out.println("TIMEOUT CANCELLEd");
byteMessage = message.toString().getBytes(); byteMessage = message.toString().getBytes();
buffer = ByteBuffer.wrap(byteMessage); bufferMessage = ByteBuffer.wrap(byteMessage);
try { try {
socketClient.write(buffer); socketClient.write(bufferMessage);
} catch (IOException e) { } catch (IOException e) {
} }
//clientSocket.close(); //clientSocket.close();
} }
} }
if (!matchNotAvailable) { if (matchNotAvailable) {
//Start receive words: tempo masimo 5 minuti per completare l'invio delle lettere.
Future<Boolean> receiveWords = threadPool.submit(new ReceiveWords(match, datagramChannel, buffer));
Boolean receiveWordsRes = receiveWords.get();
if (receiveWordsRes) {
System.out.println("ZERO PUNTI a chi non ha ancora inviato le lettere, TIMER SCADUTO");
} else {
System.out.println("TUTTI I GIOCATORI HANNO CONSEGNATO IN TEMPO");
}
match.setUndefinedScorePlayersToZero();
while (true) {
Message msg = new Message("FINALSCORE", "SERVER", "", match.getMatchPlayersScoreAsStringList());
MulticastSocket 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);
activeMatches.remove(Match.findMatchIndex(activeMatches, match.matchCreator));
//multicastSocket.disconnect();
//multicastSocket.close();
}
} else {
return false; return false;
} }
} }
@ -202,13 +182,13 @@ public class ThreadProxy implements Callable<Boolean> {
//ULTIMO A JOINARE! INIZIA GIOCO //ULTIMO A JOINARE! INIZIA GIOCO
} else { } else {
if(match == null){ if(match == null){
buffer = ByteBuffer.allocate(1024); bufferMessage = ByteBuffer.allocate(1024);
if (socketChannel != null) { if (socketChannel != null) {
Message msg = new Message("MATCH_NOT_AVAILABLE", "", null, new DefaultListModel<>()); Message msg = new Message("MATCH_NOT_AVAILABLE", "", null, new DefaultListModel<>());
buffer.clear(); bufferMessage.clear();
byteMessage = msg.toString().getBytes(); byteMessage = msg.toString().getBytes();
buffer = ByteBuffer.wrap(byteMessage); bufferMessage = ByteBuffer.wrap(byteMessage);
socketChannel.write(buffer); socketChannel.write(bufferMessage);
matchNotAvailable = true; matchNotAvailable = true;
} }
//Match non disponibile //Match non disponibile

View file

@ -1,6 +1,7 @@
package com.texttwist.server.models; package com.texttwist.server.models;
import com.texttwist.server.components.GameServer; import com.texttwist.server.components.GameServer;
import com.texttwist.server.tasks.MatchTimeout;
import constants.Config; import constants.Config;
import javafx.util.Pair; import javafx.util.Pair;
@ -9,6 +10,10 @@ import java.net.DatagramSocket;
import java.net.Socket; import java.net.Socket;
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.Executors;
import java.util.concurrent.Future;
import static com.texttwist.server.components.GameServer.activeMatches; import static com.texttwist.server.components.GameServer.activeMatches;
@ -21,8 +26,12 @@ public class Match {
private boolean started = false; private boolean started = false;
public final String matchCreator; public final String matchCreator;
public Integer multicastId; public Integer multicastId;
public Future<Boolean> timeout;
public Future<Boolean> matchTimeout;
public boolean joinTimeout =true; public boolean joinTimeout =true;
public DefaultListModel<String> letters; public DefaultListModel<String> letters;
protected ExecutorService threadPool = Executors.newSingleThreadExecutor();
public final List<Pair<String,Integer>> playersScore = Collections.synchronizedList(new ArrayList<>()); public final List<Pair<String,Integer>> playersScore = Collections.synchronizedList(new ArrayList<>());
public Match(String matchCreator, DefaultListModel<String> players){ public Match(String matchCreator, DefaultListModel<String> players){
@ -38,15 +47,16 @@ public class Match {
} }
public static Match findMatch(List<Match> matches, String matchName){ public static Match findMatch(List<Match> matches, String matchName){
synchronized (matches) {
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)) {
return matches.get(i); return matches.get(i);
} }
} }
return null; return null;
} }
}
public void printAll(){ public void printAll(){
for (int i = 0; i < playersScore.size(); i++) { for (int i = 0; i < playersScore.size(); i++) {
@ -67,9 +77,9 @@ public class Match {
return started; return started;
} }
public Match findMatchByPlayer(String player){ public static Match findMatchByPlayer(String player){
for (int i = 0; i < activeMatches.size(); i++) { for (int i = 0; i < activeMatches.size(); i++) {
for (int j = 0; j < playersStatus.size(); j++) { for (int j = 0; j < activeMatches.get(i).playersStatus.size(); j++) {
if (activeMatches.get(i).playersStatus.get(j).getKey().equals(player)) { if (activeMatches.get(i).playersStatus.get(j).getKey().equals(player)) {
return activeMatches.get(i); return activeMatches.get(i);
} }
@ -83,10 +93,13 @@ public class Match {
public void startGame(){ public void startGame(){
this.started=true; this.started=true;
this.matchTimeout = threadPool.submit(new MatchTimeout());
} }
public void setScore(String player, Integer score){ public void setScore(String player, Integer score){
final Match m = findMatchByPlayer(player); Match m = findMatchByPlayer(player);
synchronized (m) {
m.printAll(); m.printAll();
for (int i = 0; i < m.playersScore.size(); i++) { for (int i = 0; i < m.playersScore.size(); i++) {
@ -95,8 +108,10 @@ public class Match {
} }
} }
} }
}
public Boolean allPlayersSendedHisScore(){ public Boolean allPlayersSendedHisScore(){
System.out.println(matchCreator);
printAll(); printAll();
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) {

View file

@ -3,11 +3,18 @@ import com.texttwist.client.App;
import com.texttwist.server.components.AccountsManager; import com.texttwist.server.components.AccountsManager;
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 javax.swing.*; import javax.swing.*;
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. * Created by loke on 27/06/2017.
*/ */
@ -15,26 +22,62 @@ public class ComputeScore implements Callable<Integer> {
public DefaultListModel<String> words; public DefaultListModel<String> words;
public final String sender; public final String sender;
public final Match match; public Match match;
public ComputeScore(String sender, Match match, DefaultListModel<String> words){ public ComputeScore(String sender, DefaultListModel<String> words, Match match){
this.words = words; this.words = words;
this.sender = sender;
this.match = match; this.match = match;
this.sender = sender;
} }
@Override @Override
public Integer call() throws Exception { public Integer call() throws Exception {
System.out.println("COMPUTE SCORE STARTED");
System.out.println(match);
System.out.println("COMPUTE SCORE STAsssssRTED");
synchronized (match) {
System.out.print("CALCOLO LO SCORE PER " + match.matchCreator);
Integer score = 0; Integer score = 0;
for (int i = 0; i < words.size(); i++) { for (int i = 0; i < words.size(); i++) {
if (isValid(words.get(i), match.letters)) { if (isValid(words.get(i), match.letters)) {
score += words.get(i).length(); score += words.get(i).length();
} }
} }
System.out.println("SOODDISDIS");
match.setScore(sender, score); match.setScore(sender, score);
User u = AccountsManager.getInstance().findUser(sender); User u = AccountsManager.getInstance().findUser(sender);
u.addScore(score); u.addScore(score);
if(match.allPlayersSendedHisScore()) {
match.matchTimeout.cancel(true);
//channel.close();
//Start receive words: tempo masimo 5 minuti per completare l'invio delle lettere.
match.setUndefinedScorePlayersToZero();
System.out.println("SEND BROADCAST");
while (true) {
System.out.println("SENDING");
Message msg = new Message("FINALSCORE", "SERVER", "", match.getMatchPlayersScoreAsStringList());
MulticastSocket 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);
activeMatches.remove(Match.findMatchIndex(activeMatches, match.matchCreator));
//multicastSocket.disconnect();
//multicastSocket.close();
}
}
return score; return score;
}
} }
private Boolean isValid(String word, DefaultListModel<String> letters) { private Boolean isValid(String word, DefaultListModel<String> letters) {

View file

@ -17,7 +17,8 @@ public class JoinTimeout implements Callable<Boolean> {
@Override @Override
public Boolean call() throws Exception { public Boolean call() throws Exception {
try { try {
Thread.currentThread().sleep(1*5*1000); Thread.currentThread().sleep(1*20*1000);
System.out.println("TIMEOUTTTT");
if(match.joinTimeout) { if(match.joinTimeout) {
return false; return false;

View file

@ -8,17 +8,20 @@ import models.Message;
import javax.swing.*; import javax.swing.*;
import javax.xml.crypto.Data; import javax.xml.crypto.Data;
import java.net.DatagramPacket; import java.net.*;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel; import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.Callable; 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 java.util.concurrent.Future;
import static com.texttwist.server.components.GameServer.activeMatches;
/** /**
* Created by loke on 27/06/2017. * Created by loke on 27/06/2017.
*/ */
@ -26,53 +29,42 @@ public class ReceiveWords implements Callable<Boolean>{
protected ExecutorService threadPool = Executors.newCachedThreadPool(); protected ExecutorService threadPool = Executors.newCachedThreadPool();
public DatagramChannel DatagramChannel; public DatagramChannel channel;
public final Match match;
byte[] receiveData = new byte[1024];
ByteBuffer buffer; ByteBuffer buffer;
public ReceiveWords(Match match, DatagramChannel DatagramChannel, ByteBuffer buffer) { public ReceiveWords(DatagramChannel channel, ByteBuffer buffer) {
this.match = match;
this.buffer = buffer; this.buffer = buffer;
this.DatagramChannel = DatagramChannel; this.channel = channel;
} }
@Override @Override
public Boolean call() throws Exception { public Boolean call() throws Exception {
Future<Boolean> matchTimeout = threadPool.submit(new MatchTimeout());
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
Message msg; Message msg;
DatagramSocket s = new DatagramSocket(Config.WordsReceiverServerPort);
while(true) { while(true) {
DatagramChannel.receive(buffer); byte[] buf = new byte[1024];
buffer.flip(); System.out.println("RECEIVIN WORDS");
int limits = buffer.limit();
byte bytes[] = new byte[limits];
buffer.get(bytes, 0, limits);
String rcv = new String(bytes);
buffer.rewind(); DatagramPacket packet = new DatagramPacket(buf, buf.length);
s.receive(packet);
System.out.println("WORDS RECEIVED");
String rcv = new String(packet.getData());
System.out.println(rcv);
if (rcv.startsWith("MESSAGE")) {
msg = Message.toMessage(rcv); msg = Message.toMessage(rcv);
if(msg.message.equals("WORDS")){ System.out.println(msg.sender);
break; Match match = Match.findMatchByPlayer(msg.sender);
threadPool.submit(new ComputeScore(msg.sender, msg.data, match));
} }
} }
Future<Integer> computeScore = threadPool.submit(new ComputeScore(msg.sender, match, msg.data));
//Se tutti hanno inviato le parole, blocca il timer e restituisci true
computeScore.get();
if(match.allPlayersSendedHisScore()){
match.setUndefinedScorePlayersToZero();
matchTimeout.cancel(true);
DatagramChannel.close();
return true;
}
return false;
} }

File diff suppressed because it is too large Load diff

1159
server.log

File diff suppressed because it is too large Load diff