diff options
author | Casper Beyer <caspervonb@pm.me> | 2020-10-12 01:49:55 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-11 19:49:55 +0200 |
commit | fa80649926bd492b739b4d509008b38c27eeab06 (patch) | |
tree | 3335e036a67294298262e3050b526a319bd57ebc /cli/inspector.rs | |
parent | 527628e186e0fcaf946cc0668c36453eac8ad8ae (diff) |
refactor(cli/repl): get context id from notification (#7864)
This takes the execution context id from a notification which is sent on
Runtime.enable rather than hard-coding it to a magic value.
Diffstat (limited to 'cli/inspector.rs')
-rw-r--r-- | cli/inspector.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/cli/inspector.rs b/cli/inspector.rs index 3cc3bf566..1a916c7c7 100644 --- a/cli/inspector.rs +++ b/cli/inspector.rs @@ -826,6 +826,7 @@ pub struct InspectorSession { v8_session: v8::UniqueRef<v8::inspector::V8InspectorSession>, response_tx_map: HashMap<i32, oneshot::Sender<serde_json::Value>>, next_message_id: i32, + notification_queue: Vec<Value>, } impl Deref for InspectorSession { @@ -868,8 +869,12 @@ impl v8::inspector::ChannelImpl for InspectorSession { fn send_notification( &mut self, - _message: v8::UniquePtr<v8::inspector::StringBuffer>, + message: v8::UniquePtr<v8::inspector::StringBuffer>, ) { + let raw_message = message.unwrap().string().to_string(); + let message = serde_json::from_str(&raw_message).unwrap(); + + self.notification_queue.push(message); } fn flush_protocol_notifications(&mut self) {} @@ -890,15 +895,22 @@ impl InspectorSession { let response_tx_map = HashMap::new(); let next_message_id = 0; + let notification_queue = Vec::new(); + Self { v8_channel, v8_session, response_tx_map, next_message_id, + notification_queue, } }) } + pub fn notifications(&mut self) -> Vec<Value> { + self.notification_queue.split_off(0) + } + pub async fn post_message( &mut self, method: &str, |