Skip to content

Commit

Permalink
Implements ExtensionProvider for Option<E> (#53)
Browse files Browse the repository at this point in the history
* Resolves incorrect versioning

* Bump version

* Enforce semantic versioning in CI

* Implements ExtensionProvider for Option<E>
  • Loading branch information
SirCipher authored Sep 30, 2024
1 parent 497eefe commit c9221b1
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions ratchet_ext/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,40 @@ where
}
}

impl<E> ExtensionProvider for Option<E>
where
E: ExtensionProvider,
{
type Extension = E::Extension;
type Error = E::Error;

fn apply_headers(&self, headers: &mut HeaderMap) {
if let Some(provider) = self {
provider.apply_headers(headers);
}
}

fn negotiate_client(
&self,
headers: &HeaderMap,
) -> Result<Option<Self::Extension>, Self::Error> {
match self {
Some(ext) => ext.negotiate_client(headers),
None => Ok(None),
}
}

fn negotiate_server(
&self,
headers: &HeaderMap,
) -> Result<Option<(Self::Extension, HeaderValue)>, Self::Error> {
match self {
Some(ext) => ext.negotiate_server(headers),
None => Ok(None),
}
}
}

/// A data code for a frame.
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum OpCode {
Expand Down

0 comments on commit c9221b1

Please sign in to comment.