pub struct SocketConfig {Show 14 fields
pub url: String,
pub mode: Mode,
pub suffix: Vec<u8>,
pub message_handler: Option<TcpMessageHandler>,
pub heartbeat: Option<(u64, Vec<u8>)>,
pub reconnect_timeout_ms: Option<u64>,
pub reconnect_delay_initial_ms: Option<u64>,
pub reconnect_delay_max_ms: Option<u64>,
pub reconnect_backoff_factor: Option<f64>,
pub reconnect_jitter_ms: Option<u64>,
pub connection_max_retries: Option<u32>,
pub reconnect_max_attempts: Option<u32>,
pub idle_timeout_ms: Option<u64>,
pub certs_dir: Option<String>,
}Expand description
Configuration for TCP socket connection.
Fields§
§url: StringThe URL to connect to.
mode: ModeThe connection mode {Plain, TLS}.
suffix: Vec<u8>The sequence of bytes which separates lines.
message_handler: Option<TcpMessageHandler>The optional function to handle incoming messages.
heartbeat: Option<(u64, Vec<u8>)>The optional heartbeat with period and beat message.
reconnect_timeout_ms: Option<u64>The timeout (milliseconds) for reconnection attempts.
reconnect_delay_initial_ms: Option<u64>The initial reconnection delay (milliseconds) for reconnects.
reconnect_delay_max_ms: Option<u64>The maximum reconnect delay (milliseconds) for exponential backoff.
reconnect_backoff_factor: Option<f64>The exponential backoff factor for reconnection delays.
reconnect_jitter_ms: Option<u64>The maximum jitter (milliseconds) added to reconnection delays.
connection_max_retries: Option<u32>The maximum number of initial connection attempts (default: 5).
reconnect_max_attempts: Option<u32>The maximum number of reconnection attempts before giving up.
None: Unlimited reconnection attempts (default, recommended for production).Some(n): After n failed attempts, transition to CLOSED state.
idle_timeout_ms: Option<u64>The idle timeout (milliseconds) for the read task. When set, the read task will break and trigger reconnection if no data is received within this duration. Useful for detecting silently dead connections where the server stops sending without closing.
certs_dir: Option<String>The path to the certificates directory.
Implementations§
Source§impl SocketConfig
impl SocketConfig
Sourcepub fn builder() -> SocketConfigBuilder
pub fn builder() -> SocketConfigBuilder
Create an instance of SocketConfig using the builder syntax
Trait Implementations§
Source§impl Clone for SocketConfig
impl Clone for SocketConfig
Source§impl Debug for SocketConfig
impl Debug for SocketConfig
Source§impl<'a, 'py> FromPyObject<'a, 'py> for SocketConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for SocketConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for SocketConfig
impl<'py> IntoPyObject<'py> for SocketConfig
Source§type Target = SocketConfig
type Target = SocketConfig
Source§type Output = Bound<'py, <SocketConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <SocketConfig as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for SocketConfig
impl PyClass for SocketConfig
Source§impl PyClassImpl for SocketConfig
impl PyClassImpl for SocketConfig
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// Configuration for TCP socket connection.
const RAW_DOC: &'static CStr = /// Configuration for TCP socket connection.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<SocketConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<SocketConfig>
type Layout = <<SocketConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<SocketConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForSocketConfig
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for SocketConfig
impl PyClassNewTextSignature for SocketConfig
const TEXT_SIGNATURE: &'static str = "(url, ssl, suffix, handler, heartbeat=None, reconnect_timeout_ms=10000, reconnect_delay_initial_ms=2000, reconnect_delay_max_ms=30000, reconnect_backoff_factor=1.5, reconnect_jitter_ms=100, connection_max_retries=5, reconnect_max_attempts=None, idle_timeout_ms=None, certs_dir=None)"
Source§impl PyStubType for SocketConfig
impl PyStubType for SocketConfig
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for SocketConfig
impl PyTypeInfo for SocketConfig
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for SocketConfig
Auto Trait Implementations§
impl Freeze for SocketConfig
impl !RefUnwindSafe for SocketConfig
impl Send for SocketConfig
impl Sync for SocketConfig
impl Unpin for SocketConfig
impl UnsafeUnpin for SocketConfig
impl !UnwindSafe for SocketConfig
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§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more