diff options
author | David Raifaizen <d-raif@hotmail.com> | 2016-01-06 19:41:52 -0500 |
---|---|---|
committer | David Raifaizen <d-raif@hotmail.com> | 2016-01-06 19:41:52 -0500 |
commit | 76f689cd0626540d8db5d12b4d827d89748a9ab7 (patch) | |
tree | 456bc2ddb415071ba7fe37e53005200703475ff9 /components/script/dom/websocket.rs | |
parent | 238a8786de66344d2dd6855dca25a4d4be6fa949 (diff) | |
download | servo-76f689cd0626540d8db5d12b4d827d89748a9ab7.tar.gz servo-76f689cd0626540d8db5d12b4d827d89748a9ab7.zip |
Changed blob to use DataSlice with Arc in order to limit wasteful copying of byte vector
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r-- | components/script/dom/websocket.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 35e3095293f..73c488326c5 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -381,19 +381,20 @@ impl WebSocketMethods for WebSocket { } // https://html.spec.whatwg.org/multipage/#dom-websocket-send - fn Send_(&self, data: &Blob) -> Fallible<()> { + fn Send_(&self, blob: &Blob) -> Fallible<()> { /* As per https://html.spec.whatwg.org/multipage/#websocket the buffered amount needs to be clamped to u32, even though Blob.Size() is u64 If the buffer limit is reached in the first place, there are likely other major problems */ - let data_byte_len = data.Size(); + let data_byte_len = blob.Size(); let send_data = try!(self.send_impl(data_byte_len)); if send_data { let mut other_sender = self.sender.borrow_mut(); let my_sender = other_sender.as_mut().unwrap(); - let _ = my_sender.send(WebSocketDomAction::SendMessage(MessageData::Binary(data.clone_bytes()))); + let bytes = blob.get_data().get_bytes().to_vec(); + let _ = my_sender.send(WebSocketDomAction::SendMessage(MessageData::Binary(bytes))); } Ok(()) @@ -579,7 +580,7 @@ impl Runnable for MessageReceivedTask { MessageData::Binary(data) => { match ws.binary_type.get() { BinaryType::Blob => { - let blob = Blob::new(global.r(), Some(data), ""); + let blob = Blob::new(global.r(), data, ""); blob.to_jsval(cx, message.handle_mut()); } BinaryType::Arraybuffer => { |