Refactor part of core.legacy to core.networking
This commit is contained in:
196
java/core.mimis/src/main/java/mimis/value/Key.java
Normal file
196
java/core.mimis/src/main/java/mimis/value/Key.java
Normal file
@@ -0,0 +1,196 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Rik Veenboer <rik.veenboer@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package mimis.value;
|
||||
|
||||
public enum Key {
|
||||
/*
|
||||
* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
|
||||
* 0x40 : unassigned
|
||||
* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
|
||||
*/
|
||||
LBUTTON (0x01),
|
||||
RBUTTON (0x02),
|
||||
CANCEL (0x03),
|
||||
MBUTTON (0x04),
|
||||
XBUTTON1 (0x05),
|
||||
XBUTTON2 (0x06),
|
||||
BACK (0x08),
|
||||
TAB (0x09),
|
||||
CLEAR (0x0C),
|
||||
RETURN (0x0D),
|
||||
SHIFT (0x10),
|
||||
CONTROL (0x11),
|
||||
MENU (0x12),
|
||||
PAUSE (0x13),
|
||||
CAPITAL (0x14),
|
||||
KANA (0x15),
|
||||
HANGEUL (0x15),
|
||||
HANGUL (0x15),
|
||||
JUNJA (0x17),
|
||||
FINAL (0x18),
|
||||
HANJA (0x19),
|
||||
KANJI (0x19),
|
||||
ESCAPE (0x1B),
|
||||
CONVERT (0x1C),
|
||||
NONCONVERT (0x1D),
|
||||
ACCEPT (0x1E),
|
||||
MODECHANGE (0x1F),
|
||||
SPACE (0x20),
|
||||
PRIOR (0x21),
|
||||
NEXT (0x22),
|
||||
END (0x23),
|
||||
HOME (0x24),
|
||||
LEFT (0x25),
|
||||
UP (0x26),
|
||||
RIGHT (0x27),
|
||||
DOWN (0x28),
|
||||
SELECT (0x29),
|
||||
PRINT (0x2A),
|
||||
EXECUTE (0x2B),
|
||||
SNAPSHOT (0x2C),
|
||||
INSERT (0x2D),
|
||||
DELETE (0x2E),
|
||||
HELP (0x2F),
|
||||
LWIN (0x5B),
|
||||
RWIN (0x5C),
|
||||
APPS (0x5D),
|
||||
SLEEP (0x5F),
|
||||
NUMPAD0 (0x60),
|
||||
NUMPAD1 (0x61),
|
||||
NUMPAD2 (0x62),
|
||||
NUMPAD3 (0x63),
|
||||
NUMPAD4 (0x64),
|
||||
NUMPAD5 (0x65),
|
||||
NUMPAD6 (0x66),
|
||||
NUMPAD7 (0x67),
|
||||
NUMPAD8 (0x68),
|
||||
NUMPAD9 (0x69),
|
||||
MULTIPLY (0x6A),
|
||||
ADD (0x6B),
|
||||
SEPARATOR (0x6C),
|
||||
SUBTRACT (0x6D),
|
||||
DECIMAL (0x6E),
|
||||
DIVIDE (0x6F),
|
||||
F1 (0x70),
|
||||
F2 (0x71),
|
||||
F3 (0x72),
|
||||
F4 (0x73),
|
||||
F5 (0x74),
|
||||
F6 (0x75),
|
||||
F7 (0x76),
|
||||
F8 (0x77),
|
||||
F9 (0x78),
|
||||
F10 (0x79),
|
||||
F11 (0x7A),
|
||||
F12 (0x7B),
|
||||
F13 (0x7C),
|
||||
F14 (0x7D),
|
||||
F15 (0x7E),
|
||||
F16 (0x7F),
|
||||
F17 (0x80),
|
||||
F18 (0x81),
|
||||
F19 (0x82),
|
||||
F20 (0x83),
|
||||
F21 (0x84),
|
||||
F22 (0x85),
|
||||
F23 (0x86),
|
||||
F24 (0x87),
|
||||
NUMLOCK (0x90),
|
||||
SCROLL (0x91),
|
||||
OEM_NEC_EQUAL (0x92),
|
||||
OEM_FJ_JISHO (0x92),
|
||||
OEM_FJ_MASSHOU (0x93),
|
||||
OEM_FJ_TOUROKU (0x94),
|
||||
OEM_FJ_LOYA (0x95),
|
||||
OEM_FJ_ROYA (0x96),
|
||||
LSHIFT (0xA0),
|
||||
RSHIFT (0xA1),
|
||||
LCONTROL (0xA2),
|
||||
RCONTROL (0xA3),
|
||||
LMENU (0xA4),
|
||||
RMENU (0xA5),
|
||||
BROWSER_BACK (0xA6),
|
||||
BROWSER_FORWARD (0xA7),
|
||||
BROWSER_REFRESH (0xA8),
|
||||
BROWSER_STOP (0xA9),
|
||||
BROWSER_SEARCH (0xAA),
|
||||
BROWSER_FAVORITES (0xAB),
|
||||
BROWSER_HOME (0xAC),
|
||||
VOLUME_MUTE (0xAD),
|
||||
VOLUME_DOWN (0xAE),
|
||||
VOLUME_UP (0xAF),
|
||||
MEDIA_NEXT_TRACK (0xB0),
|
||||
MEDIA_PREV_TRACK (0xB1),
|
||||
MEDIA_STOP (0xB2),
|
||||
MEDIA_PLAY_PAUSE (0xB3),
|
||||
LAUNCH_MAIL (0xB4),
|
||||
LAUNCH_MEDIA_SELECT (0xB5),
|
||||
LAUNCH_APP1 (0xB6),
|
||||
LAUNCH_APP2 (0xB7),
|
||||
OEM_1 (0xBA),
|
||||
OEM_PLUS (0xBB),
|
||||
OEM_COMMA (0xBC),
|
||||
OEM_MINUS (0xBD),
|
||||
OEM_PERIOD (0xBE),
|
||||
OEM_2 (0xBF),
|
||||
OEM_3 (0xC0),
|
||||
OEM_4 (0xDB),
|
||||
OEM_5 (0xDC),
|
||||
OEM_6 (0xDD),
|
||||
OEM_7 (0xDE),
|
||||
OEM_8 (0xDF),
|
||||
OEM_AX (0xE1),
|
||||
OEM_102 (0xE2),
|
||||
ICO_HELP (0xE3),
|
||||
ICO_00 (0xE4),
|
||||
PROCESSKEY (0xE5),
|
||||
ICO_CLEAR (0xE6),
|
||||
PACKET (0xE7),
|
||||
OEM_RESET (0xE9),
|
||||
OEM_JUMP (0xEA),
|
||||
OEM_PA1 (0xEB),
|
||||
OEM_PA2 (0xEC),
|
||||
OEM_PA3 (0xED),
|
||||
OEM_WSCTRL (0xEE),
|
||||
OEM_CUSEL (0xEF),
|
||||
OEM_ATTN (0xF0),
|
||||
OEM_FINISH (0xF1),
|
||||
OEM_COPY (0xF2),
|
||||
OEM_AUTO (0xF3),
|
||||
OEM_ENLW (0xF4),
|
||||
OEM_BACKTAB (0xF5),
|
||||
ATTN (0xF6),
|
||||
CRSEL (0xF7),
|
||||
EXSEL (0xF8),
|
||||
EREOF (0xF9),
|
||||
PLAY (0xFA),
|
||||
ZOOM (0xFB),
|
||||
NONAME (0xFC),
|
||||
PA1 (0xFD),
|
||||
OEM_CLEAR (0xFE);
|
||||
|
||||
protected int code;
|
||||
|
||||
private Key(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
dependencies {
|
||||
compile project(':core.legacy')
|
||||
}
|
||||
20
java/core.networking/src/main/java/junit/AllTests.java
Normal file
20
java/core.networking/src/main/java/junit/AllTests.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package junit;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Suite;
|
||||
import org.junit.runners.Suite.SuiteClasses;
|
||||
|
||||
import networking.TestUdpMulticastCommunication;
|
||||
import networking.TestUdpUnicastCommunication;
|
||||
|
||||
@RunWith(Suite.class)
|
||||
@SuiteClasses({
|
||||
TestTcpSocketCommunication.class,
|
||||
TestTcpChannelCommunication.class,
|
||||
TestUdpUnicastCommunication.class,
|
||||
TestUdpMulticastCommunication.class,
|
||||
TestUdpDuplexCommunication.class
|
||||
})
|
||||
|
||||
public class AllTests {}
|
||||
// Should test start()/stop() of components, check implementation
|
||||
@@ -1,4 +1,4 @@
|
||||
package junit;
|
||||
package networking;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Suite;
|
||||
@@ -0,0 +1,94 @@
|
||||
package networking;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import base.server.channel.TcpClient;
|
||||
import base.server.channel.TcpServer;
|
||||
import base.server.channel.TcpServerClient;
|
||||
|
||||
public class TestTcpChannelCommunication {
|
||||
protected TestTcpServer server;
|
||||
protected TestTcpClient client;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
server = new TestTcpServer(1234);
|
||||
server.start();
|
||||
client = new TestTcpClient(1234);
|
||||
client.start();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
client.exit();
|
||||
server.exit();
|
||||
|
||||
// Should add blocking stop and exit to worker
|
||||
while (client.active() || server.active()) {
|
||||
Thread.sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendClientToServer() throws Exception {
|
||||
String message = "test";
|
||||
client.send(message.getBytes());
|
||||
synchronized (server) {
|
||||
server.wait(2000);
|
||||
}
|
||||
byte[] buffer = server.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendServerToClient() throws Exception {
|
||||
// If client can send, connection has been established
|
||||
client.send("init".getBytes());
|
||||
|
||||
String message = "test";
|
||||
server.send(message.getBytes());
|
||||
synchronized (client) {
|
||||
client.wait(2000);
|
||||
}
|
||||
byte[] buffer = client.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
class TestTcpServer extends TcpServer {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestTcpServer(int port) {
|
||||
super(port);
|
||||
}
|
||||
|
||||
public void input(TcpServerClient client, byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TestTcpClient extends TcpClient {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestTcpClient(int port) {
|
||||
super(port);
|
||||
}
|
||||
|
||||
protected void input(byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package networking;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import base.server.socket.TcpClient;
|
||||
import base.server.socket.TcpServer;
|
||||
import base.server.socket.TcpServerClient;
|
||||
|
||||
public class TestTcpSocketCommunication {
|
||||
protected TestTcpServer server;
|
||||
protected TestTcpClient client;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
server = new TestTcpServer(1234);
|
||||
server.start();
|
||||
client = new TestTcpClient(1234);
|
||||
client.start();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
client.exit();
|
||||
server.exit();
|
||||
|
||||
// Should add blocking stop and exit to worker
|
||||
while (client.active() || server.active()) {
|
||||
Thread.sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendClientToServer() throws Exception {
|
||||
String message = "test";
|
||||
client.send(message.getBytes());
|
||||
synchronized (server) {
|
||||
server.wait(2000);
|
||||
}
|
||||
byte[] buffer = server.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendServerToClient() throws Exception {
|
||||
// If client can send, connection has been established
|
||||
client.send("init".getBytes());
|
||||
|
||||
String message = "test";
|
||||
server.send(message.getBytes());
|
||||
synchronized (client) {
|
||||
client.wait(2000);
|
||||
}
|
||||
byte[] buffer = client.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
class TestTcpServer extends TcpServer {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestTcpServer(int port) {
|
||||
super(port);
|
||||
}
|
||||
|
||||
public void input(TcpServerClient client, byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TestTcpClient extends TcpClient {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestTcpClient(int port) {
|
||||
super(port);
|
||||
}
|
||||
|
||||
protected void input(byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package networking;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import base.server.datagram.UdpDuplexAutoClient;
|
||||
import base.server.datagram.UdpDuplexServer;
|
||||
|
||||
public class TestUdpDuplexCommunication {
|
||||
protected TestUdpDuplexServer server;
|
||||
protected TestUdpDuplexClient client;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
server = new TestUdpDuplexServer(1234, 1235);
|
||||
server.start();
|
||||
client = new TestUdpDuplexClient(1234, 1235);
|
||||
client.start();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
client.exit();
|
||||
server.exit();
|
||||
|
||||
// Should add blocking stop and exit to worker
|
||||
while (client.active() || server.active()) {
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testServerToClientCommunication() throws Exception {
|
||||
String message = "test";
|
||||
server.send(message.getBytes());
|
||||
System.err.println("send");
|
||||
synchronized (client) {
|
||||
client.wait(2000);
|
||||
}
|
||||
byte[] buffer = client.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClientToServerCommunication() throws Exception {
|
||||
// Let client discover server address
|
||||
testServerToClientCommunication();
|
||||
|
||||
String message = "test";
|
||||
client.send(message.getBytes());
|
||||
System.err.println("send");
|
||||
synchronized (server) {
|
||||
server.wait(2000);
|
||||
}
|
||||
byte[] buffer = server.buffer;
|
||||
assertNotNull("Received input", buffer);
|
||||
assertEquals("Message intact", message, new String(buffer).trim());
|
||||
}
|
||||
|
||||
public class TestUdpDuplexServer extends UdpDuplexServer {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestUdpDuplexServer(int sendPort, int bindPort) {
|
||||
super(sendPort, bindPort);
|
||||
}
|
||||
|
||||
public void input(byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TestUdpDuplexClient extends UdpDuplexAutoClient {
|
||||
public byte[] buffer;
|
||||
|
||||
public TestUdpDuplexClient(int bindPort, int sendPort) throws UnknownHostException {
|
||||
super(bindPort, sendPort);
|
||||
}
|
||||
|
||||
public void input(byte[] buffer) {
|
||||
this.buffer = buffer;
|
||||
synchronized (this) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package junit;
|
||||
package networking;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
@@ -1,4 +1,4 @@
|
||||
package junit;
|
||||
package networking;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
@@ -1,4 +1,5 @@
|
||||
dependencies {
|
||||
compile project(':core.networking')
|
||||
compile project(':core.windows')
|
||||
|
||||
compile 'com.github.boukefalos:jlibmimis:0.1'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
dependencies {
|
||||
compile project(':core.legacy')
|
||||
compile project(':core.networking')
|
||||
compile project(':core.mimis')
|
||||
compile project(':core.legacy')
|
||||
compile project(':device.lirc')
|
||||
compile project(':exec.mimis')
|
||||
|
||||
|
||||
@@ -12,35 +12,35 @@ import dummy.Dummy;
|
||||
|
||||
public class TestTcpCommunication {
|
||||
public static void main(String[] args) throws Exception {
|
||||
Properties localProperties = new Properties();
|
||||
localProperties.setProperty("implementation", "local");
|
||||
localProperties.setProperty("server", "true");
|
||||
localProperties.setProperty("server.port", "8883");
|
||||
localProperties.setProperty("server.protocol", "tcp");
|
||||
Properties localProperties = new Properties();
|
||||
localProperties.setProperty("implementation", "local");
|
||||
localProperties.setProperty("server", "true");
|
||||
localProperties.setProperty("server.port", "8883");
|
||||
localProperties.setProperty("server.protocol", "tcp");
|
||||
|
||||
Properties remoteProperties = new Properties();
|
||||
remoteProperties.setProperty("implementation", "remote");
|
||||
remoteProperties.setProperty("protocol", "tcp");
|
||||
remoteProperties.setProperty("remote.host", "localhost");
|
||||
remoteProperties.setProperty("remote.port", "8883");
|
||||
Properties remoteProperties = new Properties();
|
||||
remoteProperties.setProperty("implementation", "remote");
|
||||
remoteProperties.setProperty("protocol", "tcp");
|
||||
remoteProperties.setProperty("remote.host", "localhost");
|
||||
remoteProperties.setProperty("remote.port", "8883");
|
||||
|
||||
Loader localLoader = new Loader(localProperties);
|
||||
Loader remoteLoader = new Loader(remoteProperties);
|
||||
Loader localLoader = new Loader(localProperties);
|
||||
Loader remoteLoader = new Loader(remoteProperties);
|
||||
|
||||
Lirc localLirc = localLoader.getLirc();
|
||||
Lirc remoteLirc = remoteLoader.getLirc();
|
||||
Lirc localLirc = localLoader.getLirc();
|
||||
Lirc remoteLirc = remoteLoader.getLirc();
|
||||
|
||||
Properties iBuddyProperties = new Properties();
|
||||
iBuddyProperties.setProperty("implementation", "local");
|
||||
iBuddy iBuddy = new com.github.boukefalos.ibuddy.Loader(iBuddyProperties).getiBuddy();
|
||||
Dummy dummy = new Dummy(localLirc, iBuddy);
|
||||
Properties iBuddyProperties = new Properties();
|
||||
iBuddyProperties.setProperty("implementation", "local");
|
||||
iBuddy iBuddy = new com.github.boukefalos.ibuddy.Loader(iBuddyProperties).getiBuddy();
|
||||
Dummy dummy = new Dummy(localLirc, iBuddy);
|
||||
|
||||
Control server = localLoader.getServer();
|
||||
Control server = localLoader.getServer();
|
||||
|
||||
remoteLirc.start();
|
||||
server.start();
|
||||
dummy.start();
|
||||
remoteLirc.start();
|
||||
server.start();
|
||||
dummy.start();
|
||||
|
||||
Thread.sleep(10000);
|
||||
Thread.sleep(10000);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user