package Client;

import java.io.*;
import java.util.*;

public class Main implements Runnable{
  static private BufferedReader $con = null;

  static private TCP $tcp = null;
  static private UDP $udp = null;

static public void main(String[] $args)throws Exception{
  if($args.length != 4){
    System.out.println("usage: java Server.Main <MyUDPPort> <Server-Addr> <tcpPort> <udpPort>");
    System.exit(1);
  }
  System.out.println("CLIENT Starting...");

  $udp = new UDP(Integer.parseInt($args[0]),$args[1],Integer.parseInt($args[3]));
  System.out.println("CLIENT UDP: "+$args[0]+" <-> "+$args[1]+":"+$args[3]);

  $tcp = new TCP($args[1],Integer.parseInt($args[2]));
  System.out.println("CLIENT TCP: "+$args[0]);

  new Thread(new Main()).start();
  System.out.println("CLIENT IDLE.");
}

public void run(){
  try{
    Thread.currentThread().setPriority(9);
    $con = new BufferedReader (new InputStreamReader(System.in));
    while($con != null)try{auswertung($con.readLine().trim());}catch(Exception $e){$e.printStackTrace();} //Eingaben auswerten
  }catch(Exception $e){$e.printStackTrace();}
  $con = null;
}

static public void auswertung(String $eingraw)throws Exception{
  if($eingraw.equals("") || $eingraw == null)return; // Ignore null-commands
  String[] $eing = $eingraw.split("\\s+"); //regex: whitespace character once and more

  if($eing[0].equalsIgnoreCase("!end")){
    $tcp.send("!logout");
    $tcp.shutdown();
    $udp.shutdown();
    $con.close();
    $con = null;
    return;
  }
  if($eing[0].equalsIgnoreCase("!list")){$udp.send($eingraw); return;}
  if($eing[0].equalsIgnoreCase("!info")){$udp.send($eingraw); return;}
  if($eing[0].charAt(0) == '!'){$tcp.send($eingraw); return;}
  System.out.println("Unknown input: "+$eingraw);
}
}