From 3020727f4f66b02760b88b109b2a919ec5bae0a5 Mon Sep 17 00:00:00 2001 From: Huynh Thanh Binh <1653006@student.hcmus.edu.vn> Date: Sat, 1 Aug 2020 22:28:37 +0700 Subject: [PATCH] [SERVER] catch Exception and throw back SaigonParkingErrorMessage --- .../WebSocketBinaryMessageHandler.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/service/contact-service/src/main/java/com/bht/saigonparking/service/contact/handler/WebSocketBinaryMessageHandler.java b/service/contact-service/src/main/java/com/bht/saigonparking/service/contact/handler/WebSocketBinaryMessageHandler.java index 702280cd..d680cd95 100644 --- a/service/contact-service/src/main/java/com/bht/saigonparking/service/contact/handler/WebSocketBinaryMessageHandler.java +++ b/service/contact-service/src/main/java/com/bht/saigonparking/service/contact/handler/WebSocketBinaryMessageHandler.java @@ -1,6 +1,7 @@ package com.bht.saigonparking.service.contact.handler; import static com.bht.saigonparking.api.grpc.contact.SaigonParkingMessage.Classification.SYSTEM_MESSAGE; +import static com.bht.saigonparking.api.grpc.contact.SaigonParkingMessage.Type.ERROR; import static com.bht.saigonparking.api.grpc.contact.SaigonParkingMessage.Type.NOTIFICATION; import java.io.IOException; @@ -13,12 +14,14 @@ import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.BinaryWebSocketHandler; +import com.bht.saigonparking.api.grpc.contact.ErrorContent; import com.bht.saigonparking.api.grpc.contact.NotificationContent; import com.bht.saigonparking.api.grpc.contact.SaigonParkingMessage; import com.bht.saigonparking.common.util.LoggingUtil; import com.bht.saigonparking.service.contact.service.ContactService; import com.bht.saigonparking.service.contact.service.MessagingService; +import io.grpc.StatusRuntimeException; import lombok.RequiredArgsConstructor; /** @@ -75,16 +78,31 @@ protected void handleBinaryMessage(@NonNull WebSocketSession session, @NonNull B LoggingUtil.log(Level.INFO, LOGGING_KEY, "handleBinaryMessage", String.format("newBinaryMessageFromUser(%d)", userId)); SaigonParkingMessage.Builder messageBuilder = SaigonParkingMessage.newBuilder().mergeFrom(message.getPayload().array()); - - if (messageBuilder.getReceiverId() != 0) { - - /* receiver's id != 0 --> not send to system --> forward to receiver */ - messagingService.prePublishMessageToQueue(messageBuilder, session); - messagingService.publishMessageToQueue(messageBuilder.build()); - - } else { - /* receiver's id == 0 --> send to system --> not forward to receiver */ - contactService.handleMessageSendToSystem(messageBuilder.build(), session); + try { + if (messageBuilder.getReceiverId() != 0) { + + /* receiver's id != 0 --> not send to system --> forward to receiver */ + messagingService.prePublishMessageToQueue(messageBuilder, session); + messagingService.publishMessageToQueue(messageBuilder.build()); + + } else { + /* receiver's id == 0 --> send to system --> not forward to receiver */ + contactService.handleMessageSendToSystem(messageBuilder.build(), session); + } + } catch (StatusRuntimeException exception) { + + ErrorContent content = ErrorContent.newBuilder() + .setInternalErrorCode(exception.getStatus().getDescription()) + .build(); + + session.sendMessage(new BinaryMessage(messageBuilder + .setSenderId(0) + .setReceiverId(userId) + .setClassification(SYSTEM_MESSAGE) + .setType(ERROR) + .setContent(content.toByteString()) + .build() + .toByteArray())); } } } \ No newline at end of file