diff --git a/README.md b/README.md index 22d0e65..df31d36 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# Votre compte rendu ici \ No newline at end of file +# Votre compte rendu ici + +On implémente des "Class" dans les .proto, des getter seront généré par grpc \ No newline at end of file diff --git a/src/main/java/fr/istic/grpc/echo/EchoClient.java b/src/main/java/fr/istic/grpc/echo/EchoClient.java index f3f7940..e58b390 100644 --- a/src/main/java/fr/istic/grpc/echo/EchoClient.java +++ b/src/main/java/fr/istic/grpc/echo/EchoClient.java @@ -9,11 +9,11 @@ import io.grpc.*; public class EchoClient { public static void main(String[] args) throws Exception { - + ManagedChannel channel = ManagedChannelBuilder - .forAddress("localhost", 8080) //serveur localhost, port 8080 - .usePlaintext() // on demande a ne pas utiliser tls - .build(); // pattern builder + .forAddress("localhost", 8080) //serveur localhost, port 8080 + .usePlaintext() // on demande a ne pas utiliser tls + .build(); // pattern builder //On utilise un stub bloquant pour faire la requête (on bloque jusqu'à réponse) EchoServiceGrpc.EchoServiceBlockingStub stub = EchoServiceGrpc.newBlockingStub(channel); @@ -25,7 +25,6 @@ public class EchoClient { // On affiche le résultat System.out.println("Reçu : " + response.getMessage()); - channel.shutdown(); - } - + channel.shutdown(); + } } diff --git a/src/main/java/fr/istic/grpc/todo/TodoClient.java b/src/main/java/fr/istic/grpc/todo/TodoClient.java index 144a1d2..0a22fec 100644 --- a/src/main/java/fr/istic/grpc/todo/TodoClient.java +++ b/src/main/java/fr/istic/grpc/todo/TodoClient.java @@ -1,9 +1,29 @@ package fr.istic.grpc.todo; +import fr.istic.grpc.echo.Echo; +import fr.istic.grpc.echo.EchoServiceGrpc; import fr.istic.grpc.todo.Todo.*; import fr.istic.grpc.todo.TodoServiceGrpc.*; import io.grpc.*; public class TodoClient { + public static void main(String[] args) throws Exception { + ManagedChannel channel = ManagedChannelBuilder + .forAddress("localhost", 8080) //serveur localhost, port 8080 + .usePlaintext() // on demande a ne pas utiliser tls + .build(); // pattern builder + + //On utilise un stub bloquant pour faire la requête (on bloque jusqu'à réponse) + TodoServiceGrpc.TodoServiceBlockingStub stub = TodoServiceGrpc.newBlockingStub(channel); + //On construit la requête : + Echo.MessageSent request = Echo.MessageSent.newBuilder().setMessage("ilililili").build(); + + // On appelle le serveur : + //Echo.MessageReceive response = stub.echo(request); + + // On affiche le résultat + //System.out.println("Reçu : " + response.getMessage()); + channel.shutdown(); + } } diff --git a/src/main/java/fr/istic/grpc/todo/TodoServiceImpl.java b/src/main/java/fr/istic/grpc/todo/TodoServiceImpl.java index c1d3103..f2a630c 100644 --- a/src/main/java/fr/istic/grpc/todo/TodoServiceImpl.java +++ b/src/main/java/fr/istic/grpc/todo/TodoServiceImpl.java @@ -1,5 +1,6 @@ package fr.istic.grpc.todo; +import io.grpc.stub.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import io.grpc.stub.*; @@ -14,23 +15,32 @@ public class TodoServiceImpl extends TodoServiceGrpc.TodoServiceImplBase { return taskId.incrementAndGet(); } - - - @Override public void createTask(Todo.CreateTaskRequest request, StreamObserver responseObserver) { - // Créer une tâche en générant un identifiant - + Todo.TaskResponse tr = Todo.TaskResponse.newBuilder().setId(Integer.toString(generateUniqueTaskId())) + .setDescription(request.getDescription()).build(); + responseObserver.onNext(tr); + responseObserver.onCompleted(); } - @Override public void listTasks(Todo.ListTasksRequest request, StreamObserver responseObserver) { // La réponse est une liste } - @Override public void deleteTask(Todo.DeleteTaskRequest request, StreamObserver responseObserver) { // si la tâche existe, on efface, sinon on indique que l'opération est un echec - this.tasks.remove(request.id); + String id = request.getId(); + Boolean test = this.tasks.containsKey(id); + Todo.TaskResponse save = this.tasks.get(id); + this.tasks.remove(id); + test = test && !this.tasks.containsKey(id); + + + Todo.TaskResponse tr = Todo.TaskResponse.newBuilder() + .setId(save.getId()).setDescription(save.getDescription()) + .setTitle(save.getTitle()) + .setSuccess(test).build(); + responseObserver.onNext(tr); + responseObserver.onCompleted(); } } diff --git a/src/main/proto/todo.proto b/src/main/proto/todo.proto index 7488490..5dab5b4 100644 --- a/src/main/proto/todo.proto +++ b/src/main/proto/todo.proto @@ -5,9 +5,9 @@ option java_package = "fr.istic.grpc.todo"; // Le service TodoService définit les opérations disponibles pour gérer les tâches. service TodoService { - rpc Todo(CreateTaskRequest) return (TaskResponse) - rpc Todo(ListTasksRequest) return (ListTasksResponse) - rpc Todo(DeleteTask) return (TaskResponse) + rpc Create(CreateTaskRequest) returns (TaskResponse){} + rpc View(ListTasksRequest) returns (ListTasksResponse){} + rpc Delete(DeleteTaskRequest) returns (TaskResponse){} } // Message de requête pour créer une nouvelle tâche.