public void onMessage()

in src/org/jetbrains/plugins/ipnb/protocol/IpnbConnection.java [788:830]


    public void onMessage(String message) {
      final Gson gson = new Gson();
      final Message msg = gson.fromJson(message, Message.class);
      final Header header = msg.getHeader();
      final Header parentHeader = gson.fromJson(msg.getParentHeader(), Header.class);
      final String messageType = header.getMessageType();
      if ("pyout".equals(messageType) || "display_data".equals(messageType) || "execute_result".equals(messageType)) {
        final PyOutContent content = gson.fromJson(msg.getContent(), PyOutContent.class);
        addCellOutput(content);
        myListener.onOutput(IpnbConnection.this, parentHeader.getMessageId());
      }
      if ("execute_reply".equals(messageType)) {
        final PyExecuteReplyContent content = gson.fromJson(msg.getContent(), PyExecuteReplyContent.class);
        final List<Payload> payloads = content.payload;
        if (payloads != null && !payloads.isEmpty()) {
          final Payload payload = payloads.get(0);
          if (payload.replace) {
            myListener.onPayload(payload.text, parentHeader.getMessageId());
          }
        }
        if ("ok".equals(content.status) || "error".equals(content.status)) {
          myListener.onFinished(IpnbConnection.this, parentHeader.getMessageId());
        }
      }
      else if ("pyerr".equals(messageType) || "error".equals(messageType)) {
        final PyErrContent content = gson.fromJson(msg.getContent(), PyErrContent.class);
        addCellOutput(content);
        myListener.onOutput(IpnbConnection.this, parentHeader.getMessageId());
      }
      else if ("stream".equals(messageType)) {
        final PyStreamContent content = gson.fromJson(msg.getContent(), PyStreamContent.class);
        addCellOutput(content);
        myListener.onOutput(IpnbConnection.this, parentHeader.getMessageId());
      }
      else if ("pyin".equals(messageType) || "execute_input".equals(messageType)) {
        final JsonElement executionCount = msg.getContent().get("execution_count");
        if (executionCount != null) {
          myExecCount = executionCount.getAsInt();
        }
        myOutput = null;
        myListener.onOutput(IpnbConnection.this, parentHeader.getMessageId());
      }
    }