MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / create_session

Method create_session

graphlite/src/session/manager.rs:110–134  ·  view source on GitHub ↗

Create a new session and return its ID

(
        &self,
        username: String,
        roles: Vec<String>,
        permissions: SessionPermissionCache,
    )

Source from the content-addressed store, hash-verified

108
109 /// Create a new session and return its ID
110 pub fn create_session(
111 &self,
112 username: String,
113 roles: Vec<String>,
114 permissions: SessionPermissionCache,
115 ) -> Result<String, String> {
116 let user_session = UserSession::new(
117 username,
118 roles,
119 permissions,
120 self.transaction_manager.clone(),
121 );
122
123 let session_id = user_session.session_id.clone();
124 let session_arc = Arc::new(RwLock::new(user_session));
125
126 // Use partitioned lock for reduced contention
127 let partition_idx = self.partition_index(&session_id);
128 let mut partition = self.sessions[partition_idx]
129 .write()
130 .map_err(|_| "Failed to acquire partition write lock")?;
131 partition.insert(session_id.clone(), session_arc);
132
133 Ok(session_id)
134 }
135
136 /// Get a session by ID
137 pub fn get_session(&self, session_id: &str) -> Option<Arc<RwLock<UserSession>>> {

Callers 2

sessionMethod · 0.45

Calls 3

cloneMethod · 0.80
partition_indexMethod · 0.80
insertMethod · 0.45

Tested by

no test coverage detected