val eventSubscriber = new Runnable { override def run(): Unit = { while (simEventSubscriber.get()) { try { val eventName: String = subscribeSocket.recvStr() if (subscribeSocket.hasReceiveMore) { val eventData = subscribeSocket.recv(ZMQ.DONTWAIT) val hcdReceivalTime = Instant.now val currentState = messageTransformer.decodeEvent(eventName, eventData) } else { log.error(s"No event data is received for event: $eventName") } } catch { case e: Exception => e.printStackTrace() log.error("exception in subscribing events from simulator: ", Map.empty, e, noId) } } } } //MessageTransformer code: override def decodeEvent(eventName: String, encodedEventData: Array[Byte]): Event = { eventName match { case Event1 => var event: Event1 = null log.error(s"Decoding event: $eventName for data: $encodedEventData") try { event = XXDSEventsProtos.Event1.parseFrom(encodedEventData) } catch { case e: Exception => e.printStackTrace() null } case Event2 => var event: Event2 = null try { log.error(s"Decoding event: $eventName for data: $encodedEventData") event = XXDSEventsProtos.Event2.parseFrom(encodedEventData) } catch { case e: Exception => log.error("Exception while getting health event", Map.empty, e, noId) e.printStackTrace() null } } }