Skip to content

Commit

Permalink
[SERVER] catch Exception and throw back SaigonParkingErrorMessage
Browse files Browse the repository at this point in the history
  • Loading branch information
Huynh Thanh Binh committed Aug 1, 2020
1 parent 3a8ed93 commit 3020727
Showing 1 changed file with 28 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;

/**
Expand Down Expand Up @@ -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()));
}
}
}

0 comments on commit 3020727

Please sign in to comment.