datafusion_flight_sql_server/
session.rsuse async_trait::async_trait;
use datafusion::execution::context::SessionState;
use tonic::{Request, Status};
type Result<T, E = Status> = std::result::Result<T, E>;
#[async_trait]
pub trait SessionStateProvider: Sync + Send {
async fn new_context(&self, request: &Request<()>) -> Result<SessionState>;
}
pub(crate) struct StaticSessionStateProvider {
state: SessionState,
}
impl StaticSessionStateProvider {
pub fn new(state: SessionState) -> Self {
Self { state }
}
}
#[async_trait]
impl SessionStateProvider for StaticSessionStateProvider {
async fn new_context(&self, _request: &Request<()>) -> Result<SessionState> {
Ok(self.state.clone())
}
}