in kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/CommOpenHandler.scala [59:83]
private def handleCommOpen(kmBuilder: KMBuilder)(commOpen: CommOpen) = {
val commId = commOpen.comm_id
val targetName = commOpen.target_name
val data = commOpen.data
logger.debug(
s"Received comm_open for target '$targetName' with id '$commId'")
val commWriter = new KernelCommWriter(actorLoader, kmBuilder, commId)
commStorage.getTargetCallbacks(targetName) match {
case None =>
logger.warn(s"Received invalid target for Comm Open: $targetName")
commWriter.close()
case Some(callbacks) =>
logger.debug(s"Executing open callbacks for id '$commId'")
// TODO: Should we be checking the return values? Probably not.
callbacks.executeOpenCallbacks(commWriter, commId, targetName, data)
.filter(_.isFailure).map(_.failed).foreach(throwable => {
logger.error("Comm open callback encountered an error!", throwable)
})
}
}