Skip to main content

Session

Struct Session 

Source
pub struct Session(pub Arc<SessionInner>);
Expand description

A session object is used to execute queries and maintains cluster state through the control connection. The control connection is used to auto-discover nodes and monitor cluster changes (topology and schema). Each session also maintains multiple pools of connections to cluster nodes which are used to query the cluster.

Instances of the session object are thread-safe to execute queries.

Tuple Fields§

§0: Arc<SessionInner>

Implementations§

Source§

impl Session

Source

pub fn close(&self) -> CassFuture<()>

Closes the session connection and synchronously waits for any in-flight requests to complete before the returned future resolves.

Returns a CassFuture<()> that resolves once the underlying C++ driver has finished its close handshake. Callers can compose timeouts (tokio::time::timeout) around the await to bound how long they’ll wait for a hung session.

Drop for SessionInner still calls cass_session_free to deallocate; calling close().await first is the graceful path. A session that’s dropped without awaiting close() is closed synchronously by the C++ driver inside cass_session_free, which can block for up to the underlying close timeout.

Source

pub async fn prepare(&self, query: impl AsRef<str>) -> Result<PreparedStatement>

Create a prepared statement with the given query.

Source

pub fn statement(&self, query: impl AsRef<str>) -> Statement

Creates a statement with the given query.

Source

pub fn execute_batch(&self, batch: &Batch) -> CassFuture<CassResult>

Execute a batch statement.

Source

pub fn execute_batch_with_payloads( &self, batch: &Batch, ) -> CassFuture<(CassResult, HashMap<String, Vec<u8>>)>

Execute a batch statement and get any custom payloads from the response.

Source

pub fn execute_batch_with_tracing( &self, batch: &Batch, ) -> CassFuture<(CassResult, Option<Uuid>)>

Execute a batch statement and retrieve the server-side trace UUID from the future. The UUID is Some when at least one statement in the batch had set_tracing(true) set before being added (the cpp-driver returns CASS_ERROR_LIB_NO_TRACING_ID otherwise, surfaced here as None).

Mirrors Session::execute_with_tracing in shape — for batched execution where we want the trace UUID alongside the result, without awaiting in the constructor.

Source

pub async fn execute(&self, query: impl AsRef<str>) -> Result<CassResult>

Executes a given query.

Source

pub fn batch(&self, batch_type: BatchType) -> Batch

Creates a new batch that is bound to this session.

Source

pub fn execute_with_payloads( &self, statement: &Statement, ) -> CassFuture<(CassResult, HashMap<String, Vec<u8>>)>

Execute a statement and get any custom payloads from the response.

Source

pub fn execute_with_tracing( &self, statement: &Statement, ) -> CassFuture<(CassResult, Option<Uuid>)>

Execute a statement and retrieve the server-side trace UUID from the future. The UUID is Some when the statement had set_tracing(true) set before execute (the cpp-driver returns CASS_ERROR_LIB_NO_TRACING_ID otherwise, surfaced here as None). Pair with system_traces.sessions / system_traces.events queries by trace UUID for full client-driven trace capture.

Mirrors Session::execute_with_payloads in shape — borrows the statement (so it can be re-used or dropped by the caller) and returns the future without awaiting, matching the pattern callers expect for the auxiliary-data execute variants.

Source

pub fn get_schema_meta(&self) -> SchemaMeta

Gets a snapshot of this session’s schema metadata. The returned snapshot of the schema metadata is not updated. This function must be called again to retrieve any schema changes since the previous call.

Source

pub fn get_metrics(&self) -> SessionMetrics

Gets a copy of this session’s performance/diagnostic metrics.

Trait Implementations§

Source§

impl Clone for Session

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Session

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Session

Source§

fn default() -> Session

Returns the “default value” for a type. Read more
Source§

impl Eq for Session

Source§

impl PartialEq for Session

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Session

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> SendSyncUnwindSafe for T
where T: Send + Sync + UnwindSafe + ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.