public void HandleMessage(Message message, RouterSocket serverSocket, PublisherSocket ioPub) { this.logger.Debug(string.Format("Message Content {0}", message.Content)); ExecuteRequest executeRequest = JsonSerializer.Deserialize<ExecuteRequest>(message.Content); this.logger.Info(string.Format("Execute Request received with code {0}", executeRequest.Code)); // 1: Send Busy status on IOPub this.SendMessageToIOPub(message, ioPub, StatusValues.Busy); // 2: Send execute input on IOPub this.SendInputMessageToIOPub(message, ioPub, executeRequest.Code); // 3: Evaluate the C# code string code = executeRequest.Code; ExecutionResult results = this.replEngine.Execute(code); string codeOutput = this.GetCodeOutput(results); string codeHtmlOutput = this.GetCodeHtmlOutput(results); Dictionary<string, object> data = new Dictionary<string, object>() { {"text/plain", codeOutput}, {"text/html", codeHtmlOutput} }; DisplayData displayData = new DisplayData() { Data = data, }; // 4: Send execute reply to shell socket this.SendExecuteReplyMessage(message, serverSocket); // 5: Send execute result message to IOPub this.SendOutputMessageToIOPub(message, ioPub, displayData); // 6: Send IDLE status message to IOPub this.SendMessageToIOPub(message, ioPub, StatusValues.Idle); this.executionCount += 1; }
public void SendOutputMessageToIOPub(Message message, PublisherSocket ioPub, DisplayData data) { Dictionary<string,object> content = new Dictionary<string, object>(); content.Add("execution_count", this.executionCount); content.Add("data", data.Data); content.Add("metadata", data.MetaData); Message outputMessage = MessageBuilder.CreateMessage(MessageTypeValues.Output, JsonSerializer.Serialize(content), message.Header); this.logger.Info(string.Format("Sending message to IOPub {0}", JsonSerializer.Serialize(outputMessage))); MessageSender.Send(outputMessage, ioPub); }