import java.net.*;
import java.io.*;
//import Conexao;

public class servidorsoma1
{
  static ServerSocket serversocket,monitorsocket;
  static Socket socket;
  static Conexao c;
  static String msg;
  String binder = "localhost";
  int binder_port = 5001;
  ServerMonitor sm;
    
  public servidorsoma1()
  {
    String msg;
    try 
    {
      serversocket = new ServerSocket(9030);
      monitorsocket = new ServerSocket(9130);      
      System.out.println("Servidor no ar");
      
      sm = new ServerMonitor("soma1",monitorsocket);
      sm.start()      ;
      
      // faz o registro no binder
      Socket reg = new Socket(binder,binder_port);
      System.out.println("Crio o socket para registro");
      c.send(reg,"0|soma_x_y|localhost|9030|9130|");                    // tipo | nome do serviço | endereco | porta | porta de monitoramento
      System.out.println("Enviei o registro");
      msg =c.receive(reg);
      System.out.println(msg);
      if ( msg.trim().compareTo("Ok") != 0 )                                 // verifica se tudo ok !!
      {
        System.out.println("Deu problema no registro");
        System.exit(0);
      }      
    }
    catch (Exception e)
    {
      System.out.println("Nao criei o server socket... nem registrei");
    }
    
  }
  
  public static void main(String args[])
  {
     String texto;
     int x,y,num,resposta;
     new servidorsoma1();
//////////////// recebe o dado
     while(1==1)  // loop infinito
     {
        if (connect())
        {
           texto = c.receive(socket);
           System.out.println(texto);
           x=Integer.parseInt(texto.substring(0,texto.indexOf("|")));
	   //  System.out.println("X: "+x);
           num=texto.indexOf("|");
           y=Integer.parseInt(texto.substring(num+1,texto.indexOf("|",num+1)));
          //    System.out.println("Y: "+y);
          resposta=x+y;
          texto=""+resposta;
          c.send(socket,texto);
        }
     }
  }
  
  static boolean connect()
  {
    boolean ret;
    try
    {
      socket = serversocket.accept();
      ret = true;
    }
    catch (Exception e)
    {
      System.out.println("Erro de connect..."+e.getMessage());
      ret = false;
    }
    return ret;
  }


}
