1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use std::{
    collections::LinkedList,
    sync::{Arc, Mutex},
};

use serde::{Deserialize, Serialize};

use crate::remote::{client::RpcClientImpl, server::RpcServerImpl, ClientCursor};

#[derive(Default)]
pub struct RpcState {
    pub rpc_server: Mutex<RpcServerImpl>,
    pub rpc_client: Mutex<RpcClientImpl>,
}

#[derive(Default)]
pub struct CursorListState {
    pub cursors: Arc<Mutex<CursorList>>,
}

pub type CursorList = LinkedList<ClientCursor>;

#[derive(Clone, Deserialize, Serialize)]
pub struct CursorPosition {
    pub row: u64,
    pub col: u64,
}

#[derive(Deserialize, Clone)]
pub enum FileOperation {
    Insert = 0,
    Delete = 1,
    Replace = 2,
}