messaging.txt
106 lines
| 1.6 KiB
| text/plain
|
TextLexer
Fernando Perez
|
r2599 | ===================== | ||
Message Specification | ||||
===================== | ||||
Note: not all of these have yet been fully fleshed out, but the key ones are, | ||||
see kernel and frontend files for actual implementation details. | ||||
General Message Format | ||||
===================== | ||||
General message format:: | ||||
{ | ||||
header : { 'msg_id' : 10, # start with 0 | ||||
'username' : 'name', | ||||
'session' : uuid | ||||
}, | ||||
parent_header : dict, | ||||
msg_type : 'string_message_type', | ||||
content : blackbox_dict , # Must be a dict | ||||
} | ||||
Side effect: (PUB/SUB) | ||||
====================== | ||||
# msg_type = 'stream':: | ||||
content = { | ||||
name : 'stdout', | ||||
data : 'blob', | ||||
} | ||||
# msg_type = 'pyin':: | ||||
content = { | ||||
code = 'x=1', | ||||
} | ||||
# msg_type = 'pyout':: | ||||
content = { | ||||
data = 'repr(obj)', | ||||
prompt_number = 10 | ||||
} | ||||
# msg_type = 'pyerr':: | ||||
content = { | ||||
traceback : 'full traceback', | ||||
exc_type : 'TypeError', | ||||
exc_value : 'msg' | ||||
} | ||||
# msg_type = 'file': | ||||
content = { | ||||
path = 'cool.jpg', | ||||
data : 'blob' | ||||
} | ||||
Request/Reply | ||||
============= | ||||
Execute | ||||
------- | ||||
Request: | ||||
# msg_type = 'execute_request':: | ||||
content = { | ||||
code : 'a = 10', | ||||
} | ||||
Reply: | ||||
# msg_type = 'execute_reply':: | ||||
content = { | ||||
'status' : 'ok' OR 'error' OR 'abort' | ||||
# data depends on status value | ||||
} | ||||
Complete | ||||
-------- | ||||
# msg_type = 'complete_request':: | ||||
content = { | ||||
text : 'a.f', # complete on this | ||||
line : 'print a.f' # full line | ||||
} | ||||
# msg_type = 'complete_reply':: | ||||
content = { | ||||
matches : ['a.foo', 'a.bar'] | ||||
} | ||||
Control | ||||
------- | ||||
# msg_type = 'heartbeat':: | ||||
content = { | ||||
# XXX - unfinished | ||||
} | ||||