chore: moved stuff into a common library

This commit is contained in:
əlemi 2022-10-18 02:19:15 +02:00
parent e9500afd55
commit f596df73c4
10 changed files with 44 additions and 34 deletions

View file

@ -7,6 +7,10 @@ edition = "2021"
default = ["nvim"] default = ["nvim"]
nvim = [] nvim = []
[lib]
name = "library"
path = "src/lib/lib.rs"
[[bin]] # Bin to run the CodeMP gRPC server [[bin]] # Bin to run the CodeMP gRPC server
name = "server" name = "server"
path = "src/server/main.rs" path = "src/server/main.rs"
@ -27,6 +31,7 @@ rmpv = "1"
operational-transform = "0.6" operational-transform = "0.6"
nvim-rs = { version = "0.4", features = ["use_tokio"] } # TODO put this behind a conditional feature nvim-rs = { version = "0.4", features = ["use_tokio"] } # TODO put this behind a conditional feature
uuid = { version = "1", features = ["v4", "fast-rng", "macro-diagnostics"] } uuid = { version = "1", features = ["v4", "fast-rng", "macro-diagnostics"] }
rand = "0.8.5"
[build-dependencies] [build-dependencies]
tonic-build = "0.7" tonic-build = "0.7"

View file

@ -1,5 +1,5 @@
use std::fmt::Display; use std::fmt::Display;
use crate::actor::state::User; use crate::user::User;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum Event { pub enum Event {

2
src/lib/lib.rs Normal file
View file

@ -0,0 +1,2 @@
pub mod events;
pub mod user;

27
src/lib/user.rs Normal file
View file

@ -0,0 +1,27 @@
use std::fmt::Display;
#[derive(Debug, Clone)]
pub struct UserCursor{
pub buffer: i64,
pub x: i64,
pub y: i64
}
impl Display for UserCursor {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Cursor(buffer:{}, x:{}, y:{})", self.buffer, self.x, self.y)
}
}
#[derive(Debug, Clone)]
pub struct User {
pub name: String,
pub cursor: UserCursor,
}
impl Display for User {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "User(name:{}, cursor:{})", self.name, self.cursor)
}
}

View file

@ -2,7 +2,7 @@ use operational_transform::OperationSeq;
use tokio::sync::{broadcast, mpsc, watch}; use tokio::sync::{broadcast, mpsc, watch};
use tracing::error; use tracing::error;
use crate::events::Event; use library::events::Event;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
/// A view of a buffer, with references to access value and send operations /// A view of a buffer, with references to access value and send operations

View file

@ -5,32 +5,6 @@ use tracing::error;
use crate::actor::workspace::Workspace; use crate::actor::workspace::Workspace;
#[derive(Debug, Clone)]
pub struct UserCursor{
pub buffer: i32,
pub x: i32,
pub y: i32
}
impl Display for UserCursor {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Cursor(buffer:{}, x:{}, y:{})", self.buffer, self.x, self.y)
}
}
#[derive(Debug, Clone)]
pub struct User {
pub name: String,
pub cursor: UserCursor,
}
impl Display for User {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "User(name:{}, cursor:{})", self.name, self.cursor)
}
}
#[derive(Debug)] #[derive(Debug)]
enum WorkspaceAction { enum WorkspaceAction {

View file

@ -3,7 +3,7 @@ use std::collections::HashMap;
use tokio::sync::{broadcast, mpsc, watch::{self, Ref}}; use tokio::sync::{broadcast, mpsc, watch::{self, Ref}};
use tracing::warn; use tracing::warn;
use crate::{events::Event, service::workspace::proto::CursorUpdate}; use library::{events::Event, user::{User, UserCursor}};
use super::{buffer::{BufferView, Buffer}, state::{User, UserCursor}}; use super::{buffer::{BufferView, Buffer}, state::{User, UserCursor}};

View file

@ -5,7 +5,6 @@
//! //!
pub mod actor; pub mod actor;
pub mod events;
pub mod service; pub mod service;
use std::sync::Arc; use std::sync::Arc;

View file

@ -11,6 +11,8 @@ pub mod proto {
tonic::include_proto!("buffer"); tonic::include_proto!("buffer");
} }
use library::events::Event;
use tokio::sync::{broadcast, mpsc}; use tokio::sync::{broadcast, mpsc};
use tokio_stream::{Stream, StreamExt}; // TODO example used this? use tokio_stream::{Stream, StreamExt}; // TODO example used this?
@ -21,7 +23,6 @@ use tonic::Streaming;
//use futures::{Stream, StreamExt}; //use futures::{Stream, StreamExt};
use crate::actor::{buffer::BufferView, state::StateManager}; use crate::actor::{buffer::BufferView, state::StateManager};
use crate::events::Event;
use self::proto::{BufferPayload, BufferResponse}; // TODO fuck x2! use self::proto::{BufferPayload, BufferResponse}; // TODO fuck x2!

View file

@ -12,13 +12,15 @@ pub mod proto {
tonic::include_proto!("workspace"); tonic::include_proto!("workspace");
} }
use library::user::User;
use tokio_stream::{Stream, StreamExt}; // TODO example used this? use tokio_stream::{Stream, StreamExt}; // TODO example used this?
use proto::workspace_server::{Workspace, WorkspaceServer}; use proto::workspace_server::{Workspace, WorkspaceServer};
use proto::{BufferList, WorkspaceEvent, WorkspaceRequest, WorkspaceResponse, UsersList, BufferRequest, CursorUpdate, JoinRequest}; use proto::{BufferList, WorkspaceEvent, WorkspaceRequest, WorkspaceResponse, UsersList, BufferRequest, CursorUpdate, JoinRequest};
use crate::actor::state::UserCursor; use library::user::UserCursor;
use crate::actor::{buffer::Buffer, state::StateManager, workspace::Workspace as WorkspaceInstance}; // TODO fuck x2! use crate::actor::{buffer::Buffer, state::StateManager}; // TODO fuck x2!
pub struct WorkspaceExtension { pub struct WorkspaceExtension {
pub id: String pub id: String
@ -86,7 +88,7 @@ impl Workspace for WorkspaceService {
let mut event_receiver = w.bus.subscribe(); let mut event_receiver = w.bus.subscribe();
w.view().users.add( w.view().users.add(
crate::actor::state::User { crate::actor::state::User {
name: r.name.clone(), name: "some-name".to_string(), // get from request
cursor: UserCursor { buffer:0, x:0, y:0 } cursor: UserCursor { buffer:0, x:0, y:0 }
} }
); );