mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Completely abstract sending responses over channels vs. listeners.
This commit is contained in:
parent
1644436557
commit
7517aac9e9
4 changed files with 61 additions and 21 deletions
|
@ -72,8 +72,24 @@ pub trait AsyncResponseListener {
|
|||
fn response_complete(&self, status: Result<(), String>);
|
||||
}
|
||||
|
||||
pub enum ResponseAction {
|
||||
HeadersAvailable(Metadata),
|
||||
DataAvailable(Vec<u8>),
|
||||
ResponseComplete(Result<(), String>)
|
||||
}
|
||||
|
||||
impl ResponseAction {
|
||||
pub fn process(self, listener: &AsyncResponseListener) {
|
||||
match self {
|
||||
ResponseAction::HeadersAvailable(m) => listener.headers_available(m),
|
||||
ResponseAction::DataAvailable(d) => listener.data_available(d),
|
||||
ResponseAction::ResponseComplete(r) => listener.response_complete(r),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait AsyncResponseTarget {
|
||||
fn get_listener(&self) -> &AsyncResponseListener;
|
||||
fn invoke_with_listener(&self, action: ResponseAction);
|
||||
}
|
||||
|
||||
pub enum LoadConsumer {
|
||||
|
@ -174,7 +190,7 @@ pub enum CookieSource {
|
|||
|
||||
pub enum ResponseSenders {
|
||||
Channel(Sender<LoadResponse>),
|
||||
Listener(Box<AsyncResponseTarget + Send>),
|
||||
Listener(Box<AsyncResponseTarget+ Send>),
|
||||
}
|
||||
|
||||
impl ResponseSenders {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue