mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
M1456, Implement MIME sniffing initial Step
This commit is contained in:
parent
c5e1b0d32e
commit
7472564bf6
3 changed files with 56 additions and 2 deletions
46
components/net/sniffer_task.rs
Normal file
46
components/net/sniffer_task.rs
Normal file
|
@ -0,0 +1,46 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
//! A task that sniffs data
|
||||
use std::comm::{channel, Receiver, Sender, Disconnected};
|
||||
use std::task::TaskBuilder;
|
||||
use resource_task::{LoadResponse};
|
||||
|
||||
pub type SnifferTask = Sender<LoadResponse>;
|
||||
|
||||
pub fn new_sniffer_task(next_rx: Sender<LoadResponse>) -> SnifferTask {
|
||||
let(sen, rec) = channel();
|
||||
let builder = TaskBuilder::new().named("SnifferManager");
|
||||
builder.spawn(proc(){
|
||||
SnifferManager::new(rec).start(next_rx);
|
||||
});
|
||||
sen
|
||||
}
|
||||
|
||||
struct SnifferManager {
|
||||
data_receiver: Receiver<LoadResponse>,
|
||||
}
|
||||
|
||||
impl SnifferManager {
|
||||
fn new(data_receiver: Receiver <LoadResponse>) -> SnifferManager {
|
||||
SnifferManager {
|
||||
data_receiver: data_receiver,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SnifferManager {
|
||||
fn start(&self, next_rx: Sender<LoadResponse>) {
|
||||
loop {
|
||||
match self.data_receiver.try_recv() {
|
||||
Ok(snif_data) => next_rx.send(snif_data),
|
||||
Err(e) => {
|
||||
if e == Disconnected {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue