pub struct OnionServiceConfigBuilder {
nickname: Option<HsNickname>,
enabled: Option<bool>,
num_intro_points: Option<u8>,
rate_limit_at_intro: Option<Option<TokenBucketConfig>>,
max_concurrent_streams_per_circuit: Option<u32>,
enable_pow: Option<bool>,
pow_rend_queue_depth: Option<usize>,
restricted_discovery: RestrictedDiscoveryConfigBuilder,
disable_pow_compilation: Option<bool>,
}Expand description
A builder to create an instance of OnionServiceConfig.
Fields§
§nickname: Option<HsNickname>§enabled: Option<bool>§num_intro_points: Option<u8>§rate_limit_at_intro: Option<Option<TokenBucketConfig>>§max_concurrent_streams_per_circuit: Option<u32>§enable_pow: Option<bool>§pow_rend_queue_depth: Option<usize>§restricted_discovery: RestrictedDiscoveryConfigBuilder§disable_pow_compilation: Option<bool>Implementations§
Source§impl OnionServiceConfigBuilder
impl OnionServiceConfigBuilder
Sourcepub fn nickname(&mut self, val: HsNickname) -> &mut OnionServiceConfigBuilder
pub fn nickname(&mut self, val: HsNickname) -> &mut OnionServiceConfigBuilder
Sourcepub fn enabled(&mut self, val: bool) -> &mut OnionServiceConfigBuilder
pub fn enabled(&mut self, val: bool) -> &mut OnionServiceConfigBuilder
Sourcepub fn num_intro_points(&mut self, val: u8) -> &mut OnionServiceConfigBuilder
pub fn num_intro_points(&mut self, val: u8) -> &mut OnionServiceConfigBuilder
Sourcepub fn rate_limit_at_intro(
&mut self,
val: impl PossiblyOption<TokenBucketConfig>,
) -> &mut OnionServiceConfigBuilder
pub fn rate_limit_at_intro( &mut self, val: impl PossiblyOption<TokenBucketConfig>, ) -> &mut OnionServiceConfigBuilder
Provide a value for rate_limit_at_intro.
If no value is provided for rate_limit_at_intro, build will use Default::default().
For convenience, this function accepts both TokenBucketConfig and Option<$T>
.
§rate_limit_at_intro
A rate-limit on the acceptable rate of introduction requests.
We send this to the introduction point to configure how many introduction requests it sends us. If this is not set, the introduction point chooses a default based on the current consensus.
We do not enforce this limit ourselves.
This configuration is sent as a DOS_PARAMS extension, as documented in
https://spec.torproject.org/rend-spec/introduction-protocol.html#EST_INTRO_DOS_EXT.
Sourcepub fn max_concurrent_streams_per_circuit(
&mut self,
val: u32,
) -> &mut OnionServiceConfigBuilder
pub fn max_concurrent_streams_per_circuit( &mut self, val: u32, ) -> &mut OnionServiceConfigBuilder
Provide a value for max_concurrent_streams_per_circuit.
If no value is provided for max_concurrent_streams_per_circuit, build will use Default::default().
§max_concurrent_streams_per_circuit
How many streams will we allow to be open at once for a single circuit on this service?
If a client attempts to open more than this many streams on a rendezvous circuit, the circuit will be torn down.
Equivalent to C Tor’s HiddenServiceMaxStreamsCloseCircuit option.
Sourcepub fn enable_pow(&mut self, val: bool) -> &mut OnionServiceConfigBuilder
pub fn enable_pow(&mut self, val: bool) -> &mut OnionServiceConfigBuilder
Sourcepub fn pow_rend_queue_depth(
&mut self,
val: usize,
) -> &mut OnionServiceConfigBuilder
pub fn pow_rend_queue_depth( &mut self, val: usize, ) -> &mut OnionServiceConfigBuilder
Provide a value for pow_rend_queue_depth.
If no value is provided for pow_rend_queue_depth, build will use Default::default().
§pow_rend_queue_depth
The maximum number of entries allowed in the rendezvous request queue when PoW is enabled.
If you are seeing dropped requests, have a bursty traffic pattern, and have some memory to spare, you may want to increase this.
Each request will take a few KB, the default queue is expected to take 32MB at most.
Sourcepub fn restricted_discovery(&mut self) -> &mut RestrictedDiscoveryConfigBuilder
pub fn restricted_discovery(&mut self) -> &mut RestrictedDiscoveryConfigBuilder
Return a mutable reference to the inner builder for restricted_discovery.
§restricted_discovery
Configure restricted discovery mode.
When this is enabled, we encrypt our list of introduction point and keys so that only clients holding one of the listed keys can decrypt it.
Sourcepub fn disable_pow_compilation(
&mut self,
val: bool,
) -> &mut OnionServiceConfigBuilder
pub fn disable_pow_compilation( &mut self, val: bool, ) -> &mut OnionServiceConfigBuilder
Source§impl OnionServiceConfigBuilder
impl OnionServiceConfigBuilder
Sourcepub fn new() -> OnionServiceConfigBuilder
pub fn new() -> OnionServiceConfigBuilder
Return a new builder object.
Sourcepub fn build(&self) -> Result<OnionServiceConfig, ConfigBuildError>
pub fn build(&self) -> Result<OnionServiceConfig, ConfigBuildError>
Try to construct a new OnionServiceConfig from the fields set in this builder.
Return an error if any required field is missing, or is set to something invalid.
Source§impl OnionServiceConfigBuilder
impl OnionServiceConfigBuilder
Sourcepub fn peek_nickname(&self) -> Option<&HsNickname>
pub fn peek_nickname(&self) -> Option<&HsNickname>
Return the configured nickname for this service, if it has one.
Trait Implementations§
Source§impl Builder for OnionServiceConfigBuilder
impl Builder for OnionServiceConfigBuilder
Source§type Built = OnionServiceConfig
type Built = OnionServiceConfig
Source§fn build(&self) -> Result<OnionServiceConfig, ConfigBuildError>
fn build(&self) -> Result<OnionServiceConfig, ConfigBuildError>
Built Read moreSource§impl Clone for OnionServiceConfigBuilder
impl Clone for OnionServiceConfigBuilder
Source§fn clone(&self) -> OnionServiceConfigBuilder
fn clone(&self) -> OnionServiceConfigBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OnionServiceConfigBuilder
impl Debug for OnionServiceConfigBuilder
Source§impl Default for OnionServiceConfigBuilder
impl Default for OnionServiceConfigBuilder
Source§fn default() -> OnionServiceConfigBuilder
fn default() -> OnionServiceConfigBuilder
Source§impl<'de> Deserialize<'de> for OnionServiceConfigBuilder
impl<'de> Deserialize<'de> for OnionServiceConfigBuilder
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<OnionServiceConfigBuilder, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<OnionServiceConfigBuilder, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl ExtendBuilder for OnionServiceConfigBuilder
impl ExtendBuilder for OnionServiceConfigBuilder
Source§fn extend_from(
&mut self,
other: OnionServiceConfigBuilder,
strategy: ExtendStrategy,
)
fn extend_from( &mut self, other: OnionServiceConfigBuilder, strategy: ExtendStrategy, )
Source§impl Serialize for OnionServiceConfigBuilder
impl Serialize for OnionServiceConfigBuilder
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for OnionServiceConfigBuilder
impl RefUnwindSafe for OnionServiceConfigBuilder
impl Send for OnionServiceConfigBuilder
impl Sync for OnionServiceConfigBuilder
impl Unpin for OnionServiceConfigBuilder
impl UnsafeUnpin for OnionServiceConfigBuilder
impl UnwindSafe for OnionServiceConfigBuilder
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PossiblyOption<T> for T
impl<T> PossiblyOption<T> for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.