Skip to main content

BufferManager

Trait BufferManager 

Source
pub trait BufferManager: Send + Sync {
    // Required methods
    fn get(&self, id: BufferId) -> Option<Arc<RwLock<Buffer>>>;
    fn create(&self) -> BufferId;
    fn register(&self, buffer: Buffer) -> BufferId;
    fn unregister(&self, id: BufferId) -> Result<Buffer, BufferError>;
    fn list(&self) -> Vec<BufferId>;
    fn count(&self) -> usize;
}
Expand description

Buffer manager interface for kernel-driver communication.

This trait defines how buffers are stored and retrieved. The kernel provides pure storage mechanisms, while drivers implement I/O operations.

§Design Philosophy

  • No I/O operations: No open()/save() methods - VFS driver handles these
  • No focus tracking: Active buffer tracking is a runtime/window concern
  • Thread-safe: Uses Arc<RwLock<Buffer>> for concurrent access
  • Kernel purity: Pure mechanisms only, no external dependencies

§Example

use reovim_kernel::api::v1::{BufferManager, Buffer, BufferId};

struct SimpleBufferManager { /* ... */ }

impl BufferManager for SimpleBufferManager {
    fn get(&self, id: BufferId) -> Option<Arc<RwLock<Buffer>>> {
        // Implementation
    }
    // ... other methods
}

Required Methods§

Source

fn get(&self, id: BufferId) -> Option<Arc<RwLock<Buffer>>>

Get buffer by ID.

Returns None if the buffer does not exist.

Source

fn create(&self) -> BufferId

Create a new empty buffer.

Returns the ID of the newly created buffer.

Source

fn register(&self, buffer: Buffer) -> BufferId

Register an existing buffer (used by drivers after loading).

Returns the ID assigned to the registered buffer.

Source

fn unregister(&self, id: BufferId) -> Result<Buffer, BufferError>

Unregister buffer, returning ownership.

§Errors

Returns Err(BufferError::NotFound) if the buffer does not exist.

Source

fn list(&self) -> Vec<BufferId>

List all buffer IDs. Order is not guaranteed; callers that need deterministic ordering must sort the result.

Source

fn count(&self) -> usize

Get count of buffers.

Implementors§