pub struct SessionClientRequest {
pub capabilities: Option<Vec<SessionCapability>>,
pub destination: String,
pub forward_path: RoutingOptions,
pub listen_host: Option<String>,
pub max_client_sessions: Option<u64>,
pub max_surb_upstream: Option<String>,
pub response_buffer: Option<String>,
pub return_path: RoutingOptions,
pub session_pool: Option<u64>,
pub target: SessionTargetSpec,
}Expand description
Request body for creating a new client session.
JSON schema
{
"description": "Request body for creating a new client session.",
"examples": [
{
"capabilities": [
"Retransmission",
"Segmentation"
],
"destination": "0x1B482420Afa04aeC1Ef0e4a00C18451E84466c75",
"forwardPath": {
"Hops": 1
},
"listenHost": "127.0.0.1:10000",
"maxClientSessions": 2,
"maxSurbUpstream": "2000 kb/s",
"responseBuffer": "2 MB",
"returnPath": {
"Hops": 1
},
"sessionPool": 0,
"target": {
"Plain": "localhost:8080"
}
}
],
"type": "object",
"required": [
"destination",
"forwardPath",
"returnPath",
"target"
],
"properties": {
"capabilities": {
"description": "Capabilities for the Session protocol.\n\nDefaults to `Segmentation` and `Retransmission` for TCP and nothing for UDP.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/components/schemas/SessionCapability"
}
},
"destination": {
"description": "Address of the Exit node.",
"type": "string"
},
"forwardPath": {
"$ref": "#/components/schemas/RoutingOptions"
},
"listenHost": {
"description": "Listen host (`ip:port`) for the Session socket at the Entry node.\n\nSupports also partial specification (only `ip` or only `:port`) with the\nrespective part replaced by the node's configured default.",
"type": [
"string",
"null"
]
},
"maxClientSessions": {
"description": "The maximum number of client sessions that the listener can spawn.\n\nThis currently applies only to the TCP sessions, as UDP sessions cannot\nhandle multiple clients (and spawn therefore always only a single session).\n\nIf this value is smaller than the value specified in `session_pool`, it will\nbe set to that value.\n\nThe default value is 5.",
"type": [
"integer",
"null"
],
"minimum": 0.0
},
"maxSurbUpstream": {
"description": "The maximum throughput at which artificial SURBs might be generated and sent\nto the recipient of the Session.\n\nOn Sessions that rarely send data but receive a lot (= Exit node has high SURB consumption),\nthis should roughly match the maximum retrieval throughput.\n\nAll syntaxes like \"2 MBps\", \"1.2Mbps\", \"300 kb/s\", \"1.23 Mb/s\" are supported.",
"type": [
"string",
"null"
]
},
"responseBuffer": {
"description": "The amount of response data the Session counterparty can deliver back to us,\nwithout us sending any SURBs to them.\n\nIn other words, this size is recalculated to a number of SURBs delivered\nto the counterparty upfront and then maintained.\nThe maintenance is dynamic, based on the number of responses we receive.\n\nAll syntaxes like \"2 MB\", \"128 kiB\", \"3MiB\" are supported. The value must be\nat least the size of 2 Session packet payloads.",
"type": [
"string",
"null"
]
},
"returnPath": {
"$ref": "#/components/schemas/RoutingOptions"
},
"sessionPool": {
"description": "How many Sessions to pool for clients.\n\nIf no sessions are pooled, they will be opened ad-hoc when a client connects.\nIt has no effect on UDP sessions in the current implementation.\n\nCurrently, the maximum value is 5.",
"type": [
"integer",
"null"
],
"minimum": 0.0
},
"target": {
"$ref": "#/components/schemas/SessionTargetSpec"
}
}
}Fields§
§capabilities: Option<Vec<SessionCapability>>Capabilities for the Session protocol.
Defaults to Segmentation and Retransmission for TCP and nothing for UDP.
destination: StringAddress of the Exit node.
forward_path: RoutingOptions§listen_host: Option<String>Listen host (ip:port) for the Session socket at the Entry node.
Supports also partial specification (only ip or only :port) with the
respective part replaced by the node’s configured default.
max_client_sessions: Option<u64>The maximum number of client sessions that the listener can spawn.
This currently applies only to the TCP sessions, as UDP sessions cannot handle multiple clients (and spawn therefore always only a single session).
If this value is smaller than the value specified in session_pool, it will
be set to that value.
The default value is 5.
max_surb_upstream: Option<String>The maximum throughput at which artificial SURBs might be generated and sent to the recipient of the Session.
On Sessions that rarely send data but receive a lot (= Exit node has high SURB consumption), this should roughly match the maximum retrieval throughput.
All syntaxes like “2 MBps”, “1.2Mbps”, “300 kb/s”, “1.23 Mb/s” are supported.
response_buffer: Option<String>The amount of response data the Session counterparty can deliver back to us, without us sending any SURBs to them.
In other words, this size is recalculated to a number of SURBs delivered to the counterparty upfront and then maintained. The maintenance is dynamic, based on the number of responses we receive.
All syntaxes like “2 MB”, “128 kiB”, “3MiB” are supported. The value must be at least the size of 2 Session packet payloads.
return_path: RoutingOptions§session_pool: Option<u64>How many Sessions to pool for clients.
If no sessions are pooled, they will be opened ad-hoc when a client connects. It has no effect on UDP sessions in the current implementation.
Currently, the maximum value is 5.
target: SessionTargetSpecTrait Implementations§
Source§impl Clone for SessionClientRequest
impl Clone for SessionClientRequest
Source§fn clone(&self) -> SessionClientRequest
fn clone(&self) -> SessionClientRequest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionClientRequest
impl Debug for SessionClientRequest
Source§impl<'de> Deserialize<'de> for SessionClientRequest
impl<'de> Deserialize<'de> for SessionClientRequest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SessionClientRequest
impl RefUnwindSafe for SessionClientRequest
impl Send for SessionClientRequest
impl Sync for SessionClientRequest
impl Unpin for SessionClientRequest
impl UnwindSafe for SessionClientRequest
Blanket Implementations§
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more