package tpcorba.exo1;
import org.omg.CORBA.*;
import java.io.*;
import java.lang.*;
import java.util.*;
public class Client {
public static void main(String[] args) throws IOException {
////////////////////////////////////////////////////
// On initialise l'ORB
////////////////////////////////////////////////////
ORB orb = ORB.init(args, null);
if (args.length != 1) {
System.err.println("utilisation : Client nombre");
System.exit(1);
}
////////////////////////////////////////////////////
// Recuperation de la reference d'objet du serveur
// Dans cet exemple, la reference est stockee sous
// la forme d'une chaine de caracteres (IOR) dans un
// fichier. A ce stade, il est bien sur possible
// d'invoquer un service de nommage.
////////////////////////////////////////////////////
String ior = null;
try {
String ref = "calcul.ref";
FileInputStream file = new FileInputStream(ref);
BufferedReader in = new BufferedReader(new InputStreamReader(file));
ior = in.readLine();
file.close();
} catch (IOException ex) {
System.err.println("Impossible de lire fichier : `" +
ex.getMessage() + "'");
System.exit(1);
}
////////////////////////////////////////////////////
// Construction d'une reference d'objet, non type d'abord,
// puis "cast" en une reference sur l'interface
// "calcul" avec narrow (generation d'une souche)
////////////////////////////////////////////////////
org.omg.CORBA.Object obj = orb.string_to_object(ior);
if (obj == null) {
System.err.println("Erreur sur string_to_object() ");
throw new RuntimeException();
}
calcul calc = calculHelper.narrow(obj);
if (calc == null) {
System.err.println("Erreur sur narrow() ");
throw new RuntimeException();
}
////////////////////////////////////////////////////
// Invocation du serveur
////////////////////////////////////////////////////
char car;
Integer param = new Integer(args[0]);
IntHolder resultat = new IntHolder(param.intValue());
try {
System.out.println(" Que faire (incrementer ou decrementer ; saisir i ou d)? ");
car = (char) System.in.read();
if (car == 'i') {
calc.incrementer(resultat);
System.out.println(" Valeur incrementee = " + resultat.value);
} else if (car == 'd') {
calc.decrementer(resultat);
System.out.println(" Valeur decrementee = " + resultat.value);
} else {
System.out.println(" Saisir 'i' ou 'd'");
}
} catch (IOException ex) {
System.out.println("Erreur lecture commande (char)");
System.exit(1);
}
System.exit(0);
}
}