package net.tomp2p;
import java.io.IOException;
import java.util.Scanner;
public class Inbox {
private static boolean exit = false;
public static void main(String[] args) throws IOException {
if (args.length < 1) {
System.err.println("Argument missing.");
System.exit(-1);
}
String argument = args[0];
while (!exit) {
exit = true;
try {
System.out.println(String.format("Argument: %s ", argument));
execute(argument);
if (!exit)
{
System.out.println("Waiting for next argument...");
Scanner scanner = new Scanner(System.in);
argument = scanner.nextLine();
scanner.close();
}
} catch (Exception ex) {
System.err.println(String.format("Exception occurred:\n%s.", ex));
System.out.println("Exiting due to error.");
System.exit(-1);
}
}
System.out.println("Exiting with success.");
System.exit(0);
}
private static void execute(String argument) throws Exception {
byte[] result = null;
// executed .NET test
switch (argument) {
// primitive type encoding / decoding
case "TestEncodeByte":
result = DotNetEncodeDecode.testDecodeByte(argument);
break;
case "TestEncodeBytes":
result = DotNetEncodeDecode.testDecodeBytes(argument);
break;
case "TestEncodeShort":
result = DotNetEncodeDecode.testDecodeShort(argument);
break;
case "TestEncodeInt":
result = DotNetEncodeDecode.testDecodeInt(argument);
break;
case "TestEncodeLong":
result = DotNetEncodeDecode.testDecodeLong(argument);
break;
case "TestDecodeByte":
result = DotNetEncodeDecode.encodeByte();
break;
case "TestDecodeBytes":
result = DotNetEncodeDecode.encodeBytes();
break;
case "TestDecodeShort":
result = DotNetEncodeDecode.encodeShort();
break;
case "TestDecodeInt":
result = DotNetEncodeDecode.encodeInt();
break;
case "TestDecodeLong":
result = DotNetEncodeDecode.encodeLong();
break;
// Message object encoding / decoding
case "TestMessageEncodeEmpty":
result = MessageEncodeDecode.decodeMessageEmpty(argument);
break;
case "TestMessageEncodeKey":
result = MessageEncodeDecode.decodeMessageKey(argument);
break;
case "TestMessageEncodeMapKey640Data":
result = MessageEncodeDecode.decodeMessageMapKey640Data(argument);
break;
case "TestMessageEncodeMapKey640Keys":
result = MessageEncodeDecode.decodeMessageMapKey640Keys(argument);
break;
case "TestMessageEncodeSetKey640":
result = MessageEncodeDecode.decodeMessageSetKey640(argument);
break;
case "TestMessageEncodeSetNeighbors":
result = MessageEncodeDecode.decodeMessageSetNeighbors(argument);
break;
case "TestMessageEncodeByteBuffer":
result = MessageEncodeDecode.decodeMessageByteBuffer(argument);
break;
case "TestMessageEncodeLong":
result = MessageEncodeDecode.decodeMessageLong(argument);
break;
case "TestMessageEncodeInteger":
result = MessageEncodeDecode.decodeMessageInteger(argument);
break;
case "TestMessageEncodePublicKeySignature":
result = MessageEncodeDecode.decodeMessagePublicKeySignature(argument);
break;
case "TestMessageEncodePublicKey":
result = MessageEncodeDecode.decodeMessagePublicKey(argument);
break;
case "TestMessageEncodeSetTrackerData":
result = MessageEncodeDecode.decodeMessageSetTrackerData(argument);
break;
case "TestMessageEncodeBloomFilter":
result = MessageEncodeDecode.decodeMessageBloomFilter(argument);
break;
case "TestMessageEncodeMapKey640Byte":
result = MessageEncodeDecode.decodeMessageMapKey640Byte(argument);
break;
case "TestMessageEncodeSetPeerSocket":
result = MessageEncodeDecode.decodeMessageSetPeerSocket(argument);
break;
case "TestMessageDecodeEmpty":
result = MessageEncodeDecode.encodeMessageEmpty();
break;
case "TestMessageDecodeKey":
result = MessageEncodeDecode.encodeMessageKey();
break;
case "TestMessageDecodeMapKey640Data":
result = MessageEncodeDecode.encodeMessageMapKey640Data();
break;
case "TestMessageDecodeMapKey640Keys":
result = MessageEncodeDecode.encodeMessageMapKey640Keys();
break;
case "TestMessageDecodeSetKey640":
result = MessageEncodeDecode.encodeMessageSetKey640();
break;
case "TestMessageDecodeSetNeighbors":
result = MessageEncodeDecode.encodeMessageSetNeighbors();
break;
case "TestMessageDecodeByteBuffer":
result = MessageEncodeDecode.encodeMessageByteBuffer();
break;
case "TestMessageDecodeInteger":
result = MessageEncodeDecode.encodeMessageInt();
break;
case "TestMessageDecodeLong":
result = MessageEncodeDecode.encodeMessageLong();
break;
case "TestMessageDecodePublicKeySignature":
result = MessageEncodeDecode.encodeMessagePublicKeySignature();
break;
case "TestMessageDecodePublicKey":
result = MessageEncodeDecode.encodeMessagePublicKey();
break;
case "TestMessageDecodeSetTrackerData":
result = MessageEncodeDecode.encodeMessageSetTrackerData();
break;
case "TestMessageDecodeBloomFilter":
result = MessageEncodeDecode.encodeMessageBloomFilter();
break;
case "TestMessageDecodeMapKey640Byte":
result = MessageEncodeDecode.encodeMessageMapKey640Byte();
break;
case "TestMessageDecodeSetPeerSocket":
result = MessageEncodeDecode.encodeMessageSetPeerSocket();
break;
// pings
case "JavaPingReceiver-start":
exit = false;
Pings.startJavaPingReceiver();
break;
case "JavaPingReceiver-stop":
Pings.stopJavaPingReceiver();
break;
case "TestPingUdpFromJava":
result = Pings.pingDotNet(argument, true);
break;
case "TestPingTcpFromJava":
result = Pings.pingDotNet(argument, false);
break;
default:
System.err.println(String.format("Invalid argument: %s.", argument));
System.exit(-1);
break;
}
if (result != null) {
InteropUtil.writeToFile(argument, result);
}
}
}