📝 docs: document ptth_core
parent
a911e53e48
commit
d457feb35f
|
@ -1443,7 +1443,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ptth_core"
|
name = "ptth_core"
|
||||||
version = "1.3.0"
|
version = "1.4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"ctrlc",
|
"ctrlc",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
|
|
||||||
name = "ptth_core"
|
name = "ptth_core"
|
||||||
version = "1.3.0"
|
version = "1.4.0"
|
||||||
authors = ["Trish"]
|
authors = ["Trish"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
|
|
|
@ -14,6 +14,8 @@ use tokio::{
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
|
/// Initializes a graceful shutdown using the `ctrlc` crate
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn init () -> oneshot::Receiver <()> {
|
pub fn init () -> oneshot::Receiver <()> {
|
||||||
let (tx, rx) = oneshot::channel::<()> ();
|
let (tx, rx) = oneshot::channel::<()> ();
|
||||||
|
@ -60,12 +62,17 @@ impl error::Error for ShutdownError {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The type returned by `init_with_force`
|
||||||
|
|
||||||
pub struct ForcedShutdown {
|
pub struct ForcedShutdown {
|
||||||
rx: oneshot::Receiver <()>,
|
rx: oneshot::Receiver <()>,
|
||||||
tx: oneshot::Sender <()>,
|
tx: oneshot::Sender <()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ForcedShutdown {
|
impl ForcedShutdown {
|
||||||
|
/// Wraps a future in a graceful shutdown that times out into a
|
||||||
|
/// forced shutdown.
|
||||||
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// `ForcedShutdown` if the graceful shutdown doesn't complete in time
|
/// `ForcedShutdown` if the graceful shutdown doesn't complete in time
|
||||||
|
@ -97,6 +104,8 @@ impl ForcedShutdown {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Initializes a graceful shutdown that times out into a forced shutdown
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn init_with_force () -> (oneshot::Receiver <()>, ForcedShutdown) {
|
pub fn init_with_force () -> (oneshot::Receiver <()>, ForcedShutdown) {
|
||||||
let (tx, rx) = oneshot::channel ();
|
let (tx, rx) = oneshot::channel ();
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
|
//! # PTTH Core
|
||||||
|
//!
|
||||||
|
//! Common code used by both `ptth_relay` and `ptth_server`.
|
||||||
|
|
||||||
#![warn (clippy::pedantic)]
|
#![warn (clippy::pedantic)]
|
||||||
|
|
||||||
|
/// Wrapper for graceful and forced shutdowns of `ptth_relay` and `ptth_server`
|
||||||
pub mod graceful_shutdown;
|
pub mod graceful_shutdown;
|
||||||
|
|
||||||
|
/// An abstraction over HTTP that is easy to (de)serialize
|
||||||
pub mod http_serde;
|
pub mod http_serde;
|
||||||
|
|
||||||
pub mod prelude;
|
pub mod prelude;
|
||||||
|
|
||||||
// It's easier if the server can stream its response body
|
/// `ptth_server` packs its response headers into this request header
|
||||||
// back to the relay un-changed inside its request body
|
///
|
||||||
// So we wrap the server's actual response head
|
/// This allows the server's response body to be wrapped verbatim
|
||||||
// (status code, headers, etc.) in this one header field.
|
/// in the request body.
|
||||||
|
/// The header value is the response's status code and headers,
|
||||||
|
/// wrapped in a MessagePack structure, and encoded in base64
|
||||||
|
/// to make it ASCII.
|
||||||
|
|
||||||
pub const PTTH_MAGIC_HEADER: &str = "X-PTTH-2LJYXWC4";
|
pub const PTTH_MAGIC_HEADER: &str = "X-PTTH-2LJYXWC4";
|
||||||
|
|
||||||
|
@ -15,6 +26,10 @@ pub const PTTH_MAGIC_HEADER: &str = "X-PTTH-2LJYXWC4";
|
||||||
// e.g. prefix_match ("/prefix", "/prefix/middle/suffix") -> "/middle/suffix"
|
// e.g. prefix_match ("/prefix", "/prefix/middle/suffix") -> "/middle/suffix"
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
#[deprecated (
|
||||||
|
since = "1.4.0",
|
||||||
|
note = "Use `str::strip_prefix instead`"
|
||||||
|
)]
|
||||||
pub fn prefix_match <'a> (prefix: &str, hay: &'a str) -> Option <&'a str>
|
pub fn prefix_match <'a> (prefix: &str, hay: &'a str) -> Option <&'a str>
|
||||||
{
|
{
|
||||||
hay.strip_prefix (prefix)
|
hay.strip_prefix (prefix)
|
||||||
|
|
Loading…
Reference in New Issue