ソースを参照

initial proect

master
DemiSel 3年前
コミット
c5d32597a9

+ 3
- 0
.idea/.gitignore ファイルの表示

@@ -0,0 +1,3 @@
1
+# Default ignored files
2
+/shelf/
3
+/workspace.xml

+ 6
- 0
.idea/compiler.xml ファイルの表示

@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="CompilerConfiguration">
4
+    <bytecodeTargetLevel target="15" />
5
+  </component>
6
+</project>

+ 16
- 0
.idea/gradle.xml ファイルの表示

@@ -0,0 +1,16 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="GradleSettings">
4
+    <option name="linkedExternalProjectsSettings">
5
+      <GradleProjectSettings>
6
+        <option name="distributionType" value="DEFAULT_WRAPPED" />
7
+        <option name="externalProjectPath" value="$PROJECT_DIR$" />
8
+        <option name="modules">
9
+          <set>
10
+            <option value="$PROJECT_DIR$" />
11
+          </set>
12
+        </option>
13
+      </GradleProjectSettings>
14
+    </option>
15
+  </component>
16
+</project>

+ 20
- 0
.idea/jarRepositories.xml ファイルの表示

@@ -0,0 +1,20 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="RemoteRepositoriesConfiguration">
4
+    <remote-repository>
5
+      <option name="id" value="central" />
6
+      <option name="name" value="Maven Central repository" />
7
+      <option name="url" value="https://repo1.maven.org/maven2" />
8
+    </remote-repository>
9
+    <remote-repository>
10
+      <option name="id" value="jboss.community" />
11
+      <option name="name" value="JBoss Community repository" />
12
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
13
+    </remote-repository>
14
+    <remote-repository>
15
+      <option name="id" value="MavenRepo" />
16
+      <option name="name" value="MavenRepo" />
17
+      <option name="url" value="https://repo.maven.apache.org/maven2/" />
18
+    </remote-repository>
19
+  </component>
20
+</project>

+ 7
- 0
.idea/misc.xml ファイルの表示

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
4
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_15" default="true" project-jdk-name="openjdk-15" project-jdk-type="JavaSDK">
5
+    <output url="file://$PROJECT_DIR$/out" />
6
+  </component>
7
+</project>

+ 20
- 0
build.gradle ファイルの表示

@@ -0,0 +1,20 @@
1
+plugins {
2
+    id 'java'
3
+}
4
+
5
+group 'org.example'
6
+version '1.0-SNAPSHOT'
7
+
8
+repositories {
9
+    mavenCentral()
10
+}
11
+
12
+dependencies {
13
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
14
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
15
+    implementation 'io.undertow:undertow-core:2.1.0.Final'
16
+}
17
+
18
+test {
19
+    useJUnitPlatform()
20
+}

+ 5
- 0
gradle/wrapper/gradle-wrapper.properties ファイルの表示

@@ -0,0 +1,5 @@
1
+distributionBase=GRADLE_USER_HOME
2
+distributionPath=wrapper/dists
3
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
4
+zipStoreBase=GRADLE_USER_HOME
5
+zipStorePath=wrapper/dists

+ 185
- 0
gradlew ファイルの表示

@@ -0,0 +1,185 @@
1
+#!/usr/bin/env sh
2
+
3
+#
4
+# Copyright 2015 the original author or authors.
5
+#
6
+# Licensed under the Apache License, Version 2.0 (the "License");
7
+# you may not use this file except in compliance with the License.
8
+# You may obtain a copy of the License at
9
+#
10
+#      https://www.apache.org/licenses/LICENSE-2.0
11
+#
12
+# Unless required by applicable law or agreed to in writing, software
13
+# distributed under the License is distributed on an "AS IS" BASIS,
14
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+# See the License for the specific language governing permissions and
16
+# limitations under the License.
17
+#
18
+
19
+##############################################################################
20
+##
21
+##  Gradle start up script for UN*X
22
+##
23
+##############################################################################
24
+
25
+# Attempt to set APP_HOME
26
+# Resolve links: $0 may be a link
27
+PRG="$0"
28
+# Need this for relative symlinks.
29
+while [ -h "$PRG" ] ; do
30
+    ls=`ls -ld "$PRG"`
31
+    link=`expr "$ls" : '.*-> \(.*\)$'`
32
+    if expr "$link" : '/.*' > /dev/null; then
33
+        PRG="$link"
34
+    else
35
+        PRG=`dirname "$PRG"`"/$link"
36
+    fi
37
+done
38
+SAVED="`pwd`"
39
+cd "`dirname \"$PRG\"`/" >/dev/null
40
+APP_HOME="`pwd -P`"
41
+cd "$SAVED" >/dev/null
42
+
43
+APP_NAME="Gradle"
44
+APP_BASE_NAME=`basename "$0"`
45
+
46
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48
+
49
+# Use the maximum available, or set MAX_FD != -1 to use that value.
50
+MAX_FD="maximum"
51
+
52
+warn () {
53
+    echo "$*"
54
+}
55
+
56
+die () {
57
+    echo
58
+    echo "$*"
59
+    echo
60
+    exit 1
61
+}
62
+
63
+# OS specific support (must be 'true' or 'false').
64
+cygwin=false
65
+msys=false
66
+darwin=false
67
+nonstop=false
68
+case "`uname`" in
69
+  CYGWIN* )
70
+    cygwin=true
71
+    ;;
72
+  Darwin* )
73
+    darwin=true
74
+    ;;
75
+  MINGW* )
76
+    msys=true
77
+    ;;
78
+  NONSTOP* )
79
+    nonstop=true
80
+    ;;
81
+esac
82
+
83
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84
+
85
+
86
+# Determine the Java command to use to start the JVM.
87
+if [ -n "$JAVA_HOME" ] ; then
88
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89
+        # IBM's JDK on AIX uses strange locations for the executables
90
+        JAVACMD="$JAVA_HOME/jre/sh/java"
91
+    else
92
+        JAVACMD="$JAVA_HOME/bin/java"
93
+    fi
94
+    if [ ! -x "$JAVACMD" ] ; then
95
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96
+
97
+Please set the JAVA_HOME variable in your environment to match the
98
+location of your Java installation."
99
+    fi
100
+else
101
+    JAVACMD="java"
102
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103
+
104
+Please set the JAVA_HOME variable in your environment to match the
105
+location of your Java installation."
106
+fi
107
+
108
+# Increase the maximum file descriptors if we can.
109
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110
+    MAX_FD_LIMIT=`ulimit -H -n`
111
+    if [ $? -eq 0 ] ; then
112
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113
+            MAX_FD="$MAX_FD_LIMIT"
114
+        fi
115
+        ulimit -n $MAX_FD
116
+        if [ $? -ne 0 ] ; then
117
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
118
+        fi
119
+    else
120
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121
+    fi
122
+fi
123
+
124
+# For Darwin, add options to specify how the application appears in the dock
125
+if $darwin; then
126
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127
+fi
128
+
129
+# For Cygwin or MSYS, switch paths to Windows format before running java
130
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133
+
134
+    JAVACMD=`cygpath --unix "$JAVACMD"`
135
+
136
+    # We build the pattern for arguments to be converted via cygpath
137
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138
+    SEP=""
139
+    for dir in $ROOTDIRSRAW ; do
140
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
141
+        SEP="|"
142
+    done
143
+    OURCYGPATTERN="(^($ROOTDIRS))"
144
+    # Add a user-defined pattern to the cygpath arguments
145
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147
+    fi
148
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
149
+    i=0
150
+    for arg in "$@" ; do
151
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
153
+
154
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
155
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156
+        else
157
+            eval `echo args$i`="\"$arg\""
158
+        fi
159
+        i=`expr $i + 1`
160
+    done
161
+    case $i in
162
+        0) set -- ;;
163
+        1) set -- "$args0" ;;
164
+        2) set -- "$args0" "$args1" ;;
165
+        3) set -- "$args0" "$args1" "$args2" ;;
166
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172
+    esac
173
+fi
174
+
175
+# Escape application args
176
+save () {
177
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178
+    echo " "
179
+}
180
+APP_ARGS=`save "$@"`
181
+
182
+# Collect all arguments for the java command, following the shell quoting and substitution rules
183
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184
+
185
+exec "$JAVACMD" "$@"

+ 89
- 0
gradlew.bat ファイルの表示

@@ -0,0 +1,89 @@
1
+@rem
2
+@rem Copyright 2015 the original author or authors.
3
+@rem
4
+@rem Licensed under the Apache License, Version 2.0 (the "License");
5
+@rem you may not use this file except in compliance with the License.
6
+@rem You may obtain a copy of the License at
7
+@rem
8
+@rem      https://www.apache.org/licenses/LICENSE-2.0
9
+@rem
10
+@rem Unless required by applicable law or agreed to in writing, software
11
+@rem distributed under the License is distributed on an "AS IS" BASIS,
12
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+@rem See the License for the specific language governing permissions and
14
+@rem limitations under the License.
15
+@rem
16
+
17
+@if "%DEBUG%" == "" @echo off
18
+@rem ##########################################################################
19
+@rem
20
+@rem  Gradle startup script for Windows
21
+@rem
22
+@rem ##########################################################################
23
+
24
+@rem Set local scope for the variables with windows NT shell
25
+if "%OS%"=="Windows_NT" setlocal
26
+
27
+set DIRNAME=%~dp0
28
+if "%DIRNAME%" == "" set DIRNAME=.
29
+set APP_BASE_NAME=%~n0
30
+set APP_HOME=%DIRNAME%
31
+
32
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
33
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34
+
35
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37
+
38
+@rem Find java.exe
39
+if defined JAVA_HOME goto findJavaFromJavaHome
40
+
41
+set JAVA_EXE=java.exe
42
+%JAVA_EXE% -version >NUL 2>&1
43
+if "%ERRORLEVEL%" == "0" goto execute
44
+
45
+echo.
46
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47
+echo.
48
+echo Please set the JAVA_HOME variable in your environment to match the
49
+echo location of your Java installation.
50
+
51
+goto fail
52
+
53
+:findJavaFromJavaHome
54
+set JAVA_HOME=%JAVA_HOME:"=%
55
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56
+
57
+if exist "%JAVA_EXE%" goto execute
58
+
59
+echo.
60
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61
+echo.
62
+echo Please set the JAVA_HOME variable in your environment to match the
63
+echo location of your Java installation.
64
+
65
+goto fail
66
+
67
+:execute
68
+@rem Setup the command line
69
+
70
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71
+
72
+
73
+@rem Execute Gradle
74
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75
+
76
+:end
77
+@rem End local scope for the variables with windows NT shell
78
+if "%ERRORLEVEL%"=="0" goto mainEnd
79
+
80
+:fail
81
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82
+rem the _cmd.exe /c_ return code!
83
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84
+exit /b 1
85
+
86
+:mainEnd
87
+if "%OS%"=="Windows_NT" endlocal
88
+
89
+:omega

+ 2
- 0
settings.gradle ファイルの表示

@@ -0,0 +1,2 @@
1
+rootProject.name = 'CyberCuisine'
2
+

+ 9
- 0
src/main/java/Application.java ファイルの表示

@@ -0,0 +1,9 @@
1
+public class Application {
2
+
3
+    public static void main(String [] args)
4
+    {
5
+        CuisineHTTPServer vServer = new CuisineHTTPServer();
6
+        vServer.startServer();
7
+        System.out.println("COUCOU");
8
+    }
9
+}

+ 93
- 0
src/main/java/CuisineHTTPServer.java ファイルの表示

@@ -0,0 +1,93 @@
1
+import io.undertow.Undertow;
2
+import io.undertow.server.HttpHandler;
3
+import io.undertow.server.HttpServerExchange;
4
+import io.undertow.util.Headers;
5
+import io.undertow.websockets.WebSocketConnectionCallback;
6
+import io.undertow.websockets.core.AbstractReceiveListener;
7
+import io.undertow.websockets.core.BufferedTextMessage;
8
+import io.undertow.websockets.core.WebSocketChannel;
9
+import io.undertow.websockets.core.WebSockets;
10
+import io.undertow.websockets.spi.WebSocketHttpExchange;
11
+
12
+import static io.undertow.Handlers.*;
13
+
14
+public class CuisineHTTPServer extends Thread
15
+{
16
+    final int webPagePort = 8080;
17
+    final int webSocketPort = 42069;
18
+    final String HOST = "localhost" ;
19
+
20
+
21
+    public void startServer()
22
+    {
23
+        //Create CuisineTCPServers
24
+        CuisineTCPServer vTCPServer = new CuisineTCPServer();
25
+        CuisineWebSocketMessageHandler vWebSocketMessageHandler         = new CuisineWebSocketMessageHandler( vTCPServer );
26
+        CuisineWebSocketConnectionHandler vWebSocketConnectionHandler   = new CuisineWebSocketConnectionHandler( vWebSocketMessageHandler );
27
+
28
+        //Start HTTP Server : serve webpage with JS that calls the websocket
29
+        Undertow WebPageServer = Undertow.builder()
30
+                .addHttpListener(webPagePort, HOST)
31
+                .setHandler(
32
+                        new CuisineResponseHandler()
33
+                            ).build();
34
+        WebPageServer.start();
35
+
36
+        System.out.println("WebPageServer started");
37
+        //Start websocket
38
+        Undertow WebSocketServer = Undertow.builder()
39
+            .addHttpListener(webSocketPort, HOST)
40
+            .setHandler(
41
+                path()
42
+                    .addPrefixPath("/data",websocket(vWebSocketConnectionHandler))
43
+            )
44
+            .build();
45
+        WebSocketServer.start();
46
+        System.out.println("WebSocketServer started");
47
+
48
+    }
49
+
50
+    private class CuisineResponseHandler implements HttpHandler
51
+    {
52
+
53
+        @Override
54
+        public void handleRequest(HttpServerExchange exchange) throws Exception {
55
+            //Serve webpage
56
+            exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
57
+            exchange.getResponseSender().send("Salut, gropd!");
58
+        }
59
+    }
60
+
61
+    private class CuisineWebSocketConnectionHandler implements WebSocketConnectionCallback
62
+    {
63
+        private CuisineWebSocketMessageHandler fWebSocketMessageHandler;
64
+
65
+        protected CuisineWebSocketConnectionHandler(CuisineWebSocketMessageHandler iWebSocketMessageHandler)
66
+        {
67
+        fWebSocketMessageHandler = iWebSocketMessageHandler;
68
+        }
69
+
70
+        @Override
71
+        public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) {
72
+            channel.getReceiveSetter().set(fWebSocketMessageHandler);
73
+            channel.resumeReceives();
74
+        }
75
+    }
76
+
77
+    private class CuisineWebSocketMessageHandler extends AbstractReceiveListener {
78
+
79
+        private CuisineTCPServer fTCPServer;
80
+
81
+        protected CuisineWebSocketMessageHandler( CuisineTCPServer iTCPServer)
82
+        {
83
+        fTCPServer = iTCPServer;
84
+        }
85
+
86
+        protected void onFullTextMessage(WebSocketChannel iChannel, BufferedTextMessage iTextMessage)
87
+        {
88
+            //Handle message on webSocket
89
+            WebSockets.sendText(String.valueOf(fTCPServer.getCurrentTemperature()), iChannel, null);
90
+        }
91
+
92
+    }
93
+}

+ 16
- 0
src/main/java/CuisineTCPServer.java ファイルの表示

@@ -0,0 +1,16 @@
1
+public class CuisineTCPServer {
2
+
3
+    private float fCurrentTemperature;
4
+
5
+
6
+    public CuisineTCPServer()
7
+    {
8
+        fCurrentTemperature = 0.0f;
9
+    }
10
+
11
+    public float getCurrentTemperature()
12
+    {
13
+        fCurrentTemperature += 1.1f ;
14
+        return fCurrentTemperature;
15
+    }
16
+}

読み込み中…
キャンセル
保存