Skip to content

Commit dd832b7

Browse files
committed
chore: rename some struct
1 parent 6593855 commit dd832b7

File tree

16 files changed

+115
-125
lines changed

16 files changed

+115
-125
lines changed

frontend/rust-lib/flowy-document/src/core/mod.rs

Lines changed: 0 additions & 9 deletions
This file was deleted.

frontend/rust-lib/flowy-document/src/core/editor.rs renamed to frontend/rust-lib/flowy-document/src/editor.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
use crate::core::DocumentRevisionCompact;
1+
use crate::queue::DocumentRevisionCompact;
2+
use crate::web_socket::{make_document_ws_manager, EditorCommandSender};
23
use crate::{
3-
core::{make_document_ws_manager, EditorCommand, EditorCommandQueue, EditorCommandSender},
44
errors::FlowyError,
5+
queue::{EditorCommand, EditorCommandQueue},
56
DocumentUser, DocumentWSReceiver,
67
};
78
use bytes::Bytes;
@@ -34,11 +35,11 @@ impl ClientDocumentEditor {
3435
doc_id: &str,
3536
user: Arc<dyn DocumentUser>,
3637
mut rev_manager: RevisionManager,
37-
web_socket: Arc<dyn RevisionWebSocket>,
38-
server: Arc<dyn RevisionCloudService>,
38+
rev_web_socket: Arc<dyn RevisionWebSocket>,
39+
cloud_service: Arc<dyn RevisionCloudService>,
3940
) -> FlowyResult<Arc<Self>> {
4041
let document_info = rev_manager
41-
.load::<DocumentInfoBuilder, DocumentRevisionCompact>(server)
42+
.load::<DocumentInfoBuilder, DocumentRevisionCompact>(cloud_service)
4243
.await?;
4344
let delta = document_info.delta()?;
4445
let rev_manager = Arc::new(rev_manager);
@@ -51,7 +52,7 @@ impl ClientDocumentEditor {
5152
user_id.clone(),
5253
edit_cmd_tx.clone(),
5354
rev_manager.clone(),
54-
web_socket,
55+
rev_web_socket,
5556
)
5657
.await;
5758
let editor = Arc::new(Self {

frontend/rust-lib/flowy-document/src/lib.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
pub mod controller;
2-
pub mod core;
3-
pub use controller::*;
1+
pub mod editor;
2+
pub mod manager;
3+
mod queue;
4+
mod web_socket;
5+
6+
pub use manager::*;
47
pub mod errors {
58
pub use flowy_error::{internal_error, ErrorCode, FlowyError};
69
}
710

11+
pub const DOCUMENT_SYNC_INTERVAL_IN_MILLIS: u64 = 1000;
12+
813
use crate::errors::FlowyError;
914
use flowy_collaboration::entities::document_info::{CreateDocParams, DocumentId, DocumentInfo, ResetDocumentParams};
1015
use lib_infra::future::FutureResult;

frontend/rust-lib/flowy-document/src/controller.rs renamed to frontend/rust-lib/flowy-document/src/manager.rs

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{core::ClientDocumentEditor, errors::FlowyError, DocumentCloudService};
1+
use crate::{editor::ClientDocumentEditor, errors::FlowyError, DocumentCloudService};
22
use async_trait::async_trait;
33
use bytes::Bytes;
44
use dashmap::DashMap;
@@ -29,31 +29,31 @@ pub(crate) trait DocumentWSReceiver: Send + Sync {
2929
type WebSocketDataReceivers = Arc<DashMap<String, Arc<dyn DocumentWSReceiver>>>;
3030
pub struct FlowyDocumentManager {
3131
cloud_service: Arc<dyn DocumentCloudService>,
32-
ws_receivers: WebSocketDataReceivers,
33-
web_socket: Arc<dyn RevisionWebSocket>,
34-
open_cache: Arc<OpenDocCache>,
35-
user: Arc<dyn DocumentUser>,
32+
ws_data_receivers: WebSocketDataReceivers,
33+
rev_web_socket: Arc<dyn RevisionWebSocket>,
34+
document_handlers: Arc<DocumentEditorHandlers>,
35+
document_user: Arc<dyn DocumentUser>,
3636
}
3737

3838
impl FlowyDocumentManager {
3939
pub fn new(
4040
cloud_service: Arc<dyn DocumentCloudService>,
41-
user: Arc<dyn DocumentUser>,
42-
web_socket: Arc<dyn RevisionWebSocket>,
41+
document_user: Arc<dyn DocumentUser>,
42+
rev_web_socket: Arc<dyn RevisionWebSocket>,
4343
) -> Self {
44-
let ws_receivers = Arc::new(DashMap::new());
45-
let open_cache = Arc::new(OpenDocCache::new());
44+
let ws_data_receivers = Arc::new(DashMap::new());
45+
let document_handlers = Arc::new(DocumentEditorHandlers::new());
4646
Self {
4747
cloud_service,
48-
ws_receivers,
49-
web_socket,
50-
open_cache,
51-
user,
48+
ws_data_receivers,
49+
rev_web_socket,
50+
document_handlers,
51+
document_user,
5252
}
5353
}
5454

5555
pub fn init(&self) -> FlowyResult<()> {
56-
listen_ws_state_changed(self.web_socket.clone(), self.ws_receivers.clone());
56+
listen_ws_state_changed(self.rev_web_socket.clone(), self.ws_data_receivers.clone());
5757

5858
Ok(())
5959
}
@@ -69,17 +69,17 @@ impl FlowyDocumentManager {
6969
pub fn close_document<T: AsRef<str>>(&self, doc_id: T) -> Result<(), FlowyError> {
7070
let doc_id = doc_id.as_ref();
7171
tracing::Span::current().record("doc_id", &doc_id);
72-
self.open_cache.remove(doc_id);
73-
self.remove_ws_receiver(doc_id);
72+
self.document_handlers.remove(doc_id);
73+
self.ws_data_receivers.remove(doc_id);
7474
Ok(())
7575
}
7676

7777
#[tracing::instrument(level = "debug", skip(self, doc_id), fields(doc_id), err)]
7878
pub fn delete<T: AsRef<str>>(&self, doc_id: T) -> Result<(), FlowyError> {
7979
let doc_id = doc_id.as_ref();
8080
tracing::Span::current().record("doc_id", &doc_id);
81-
self.open_cache.remove(doc_id);
82-
self.remove_ws_receiver(doc_id);
81+
self.document_handlers.remove(doc_id);
82+
self.ws_data_receivers.remove(doc_id);
8383
Ok(())
8484
}
8585

@@ -94,18 +94,18 @@ impl FlowyDocumentManager {
9494
})
9595
}
9696

97-
pub async fn save_document<T: AsRef<str>>(&self, doc_id: T, revisions: RepeatedRevision) -> FlowyResult<()> {
97+
pub async fn receive_revisions<T: AsRef<str>>(&self, doc_id: T, revisions: RepeatedRevision) -> FlowyResult<()> {
9898
let doc_id = doc_id.as_ref().to_owned();
99-
let db_pool = self.user.db_pool()?;
99+
let db_pool = self.document_user.db_pool()?;
100100
let rev_manager = self.make_rev_manager(&doc_id, db_pool)?;
101101
let _ = rev_manager.reset_object(revisions).await?;
102102
Ok(())
103103
}
104104

105-
pub async fn did_receive_ws_data(&self, data: Bytes) {
105+
pub async fn receive_ws_data(&self, data: Bytes) {
106106
let result: Result<ServerRevisionWSData, protobuf::ProtobufError> = data.try_into();
107107
match result {
108-
Ok(data) => match self.ws_receivers.get(&data.object_id) {
108+
Ok(data) => match self.ws_data_receivers.get(&data.object_id) {
109109
None => tracing::error!("Can't find any source handler for {:?}-{:?}", data.object_id, data.ty),
110110
Some(handler) => match handler.receive_ws_data(data).await {
111111
Ok(_) => {}
@@ -117,19 +117,13 @@ impl FlowyDocumentManager {
117117
}
118118
}
119119
}
120-
121-
pub async fn ws_connect_state_changed(&self, state: &WSConnectState) {
122-
for receiver in self.ws_receivers.iter() {
123-
receiver.value().connect_state_changed(state.clone());
124-
}
125-
}
126120
}
127121

128122
impl FlowyDocumentManager {
129123
async fn get_editor(&self, doc_id: &str) -> FlowyResult<Arc<ClientDocumentEditor>> {
130-
match self.open_cache.get(doc_id) {
124+
match self.document_handlers.get(doc_id) {
131125
None => {
132-
let db_pool = self.user.db_pool()?;
126+
let db_pool = self.document_user.db_pool()?;
133127
self.make_editor(doc_id, db_pool).await
134128
}
135129
Some(editor) => Ok(editor),
@@ -141,35 +135,26 @@ impl FlowyDocumentManager {
141135
doc_id: &str,
142136
pool: Arc<ConnectionPool>,
143137
) -> Result<Arc<ClientDocumentEditor>, FlowyError> {
144-
let user = self.user.clone();
145-
let token = self.user.token()?;
138+
let user = self.document_user.clone();
139+
let token = self.document_user.token()?;
146140
let rev_manager = self.make_rev_manager(doc_id, pool.clone())?;
147-
let server = Arc::new(DocumentRevisionCloudServiceImpl {
141+
let cloud_service = Arc::new(DocumentRevisionCloudServiceImpl {
148142
token,
149143
server: self.cloud_service.clone(),
150144
});
151-
let doc_editor = ClientDocumentEditor::new(doc_id, user, rev_manager, self.web_socket.clone(), server).await?;
152-
self.add_ws_receiver(doc_id, doc_editor.ws_handler());
153-
self.open_cache.insert(doc_id, &doc_editor);
145+
let doc_editor =
146+
ClientDocumentEditor::new(doc_id, user, rev_manager, self.rev_web_socket.clone(), cloud_service).await?;
147+
self.ws_data_receivers
148+
.insert(doc_id.to_string(), doc_editor.ws_handler());
149+
self.document_handlers.insert(doc_id, &doc_editor);
154150
Ok(doc_editor)
155151
}
156152

157153
fn make_rev_manager(&self, doc_id: &str, pool: Arc<ConnectionPool>) -> Result<RevisionManager, FlowyError> {
158-
let user_id = self.user.user_id()?;
154+
let user_id = self.document_user.user_id()?;
159155
let cache = Arc::new(RevisionCache::new(&user_id, doc_id, pool));
160156
Ok(RevisionManager::new(&user_id, doc_id, cache))
161157
}
162-
163-
fn add_ws_receiver(&self, object_id: &str, receiver: Arc<dyn DocumentWSReceiver>) {
164-
if self.ws_receivers.contains_key(object_id) {
165-
log::error!("Duplicate handler registered for {:?}", object_id);
166-
}
167-
self.ws_receivers.insert(object_id.to_string(), receiver);
168-
}
169-
170-
fn remove_ws_receiver(&self, id: &str) {
171-
self.ws_receivers.remove(id);
172-
}
173158
}
174159

175160
struct DocumentRevisionCloudServiceImpl {
@@ -202,11 +187,11 @@ impl RevisionCloudService for DocumentRevisionCloudServiceImpl {
202187
}
203188
}
204189

205-
pub struct OpenDocCache {
190+
pub struct DocumentEditorHandlers {
206191
inner: DashMap<String, Arc<ClientDocumentEditor>>,
207192
}
208193

209-
impl OpenDocCache {
194+
impl DocumentEditorHandlers {
210195
fn new() -> Self {
211196
Self { inner: DashMap::new() }
212197
}

frontend/rust-lib/flowy-document/src/core/queue.rs renamed to frontend/rust-lib/flowy-document/src/queue.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
use crate::{core::web_socket::EditorCommandReceiver, DocumentUser};
1+
use crate::web_socket::EditorCommandReceiver;
2+
use crate::DocumentUser;
23
use async_stream::stream;
34
use flowy_collaboration::util::make_delta_from_revisions;
45
use flowy_collaboration::{

frontend/rust-lib/flowy-document/src/core/web_socket.rs renamed to frontend/rust-lib/flowy-document/src/web_socket.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
use crate::{
2-
core::{EditorCommand, DOCUMENT_SYNC_INTERVAL_IN_MILLIS},
3-
DocumentWSReceiver,
4-
};
1+
use crate::{queue::EditorCommand, DocumentWSReceiver, DOCUMENT_SYNC_INTERVAL_IN_MILLIS};
52
use async_trait::async_trait;
63
use bytes::Bytes;
74
use flowy_collaboration::{
@@ -31,7 +28,7 @@ pub(crate) async fn make_document_ws_manager(
3128
user_id: String,
3229
edit_cmd_tx: EditorCommandSender,
3330
rev_manager: Arc<RevisionManager>,
34-
web_socket: Arc<dyn RevisionWebSocket>,
31+
rev_web_socket: Arc<dyn RevisionWebSocket>,
3532
) -> Arc<RevisionWebSocketManager> {
3633
let composite_sink_provider = Arc::new(CompositeWSSinkDataProvider::new(&doc_id, rev_manager.clone()));
3734
let resolve_target = Arc::new(DocumentRevisionResolveTarget { edit_cmd_tx });
@@ -50,7 +47,7 @@ pub(crate) async fn make_document_ws_manager(
5047
let ws_manager = Arc::new(RevisionWebSocketManager::new(
5148
"Document",
5249
&doc_id,
53-
web_socket,
50+
rev_web_socket,
5451
sink_provider,
5552
ws_stream_consumer,
5653
ping_duration,

frontend/rust-lib/flowy-document/tests/document/edit_script.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use flowy_collaboration::entities::revision::RevisionState;
2-
use flowy_document::core::{ClientDocumentEditor, DOCUMENT_SYNC_INTERVAL_IN_MILLIS};
2+
use flowy_document::editor::ClientDocumentEditor;
3+
use flowy_document::DOCUMENT_SYNC_INTERVAL_IN_MILLIS;
34
use flowy_test::{helper::ViewTest, FlowySDKTest};
45
use lib_ot::{core::Interval, rich_text::RichTextDelta};
56
use std::sync::Arc;
@@ -67,8 +68,8 @@ impl EditorTest {
6768
return;
6869
}
6970
let next_revision = next_revision.unwrap();
70-
let mut receiver = rev_manager.revision_ack_receiver();
71-
let _ = receiver.recv().await;
71+
let mut notify = rev_manager.ack_notify();
72+
let _ = notify.recv().await;
7273
assert_eq!(next_revision.rev_id, rev_id.unwrap());
7374
}
7475
EditorScript::AssertJson(expected) => {

frontend/rust-lib/flowy-folder/src/services/view/controller.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ impl ViewController {
7373
Revision::initial_revision(&user_id, &params.view_id, delta_data).into();
7474
let _ = self
7575
.document_manager
76-
.save_document(&params.view_id, repeated_revision)
76+
.receive_revisions(&params.view_id, repeated_revision)
7777
.await?;
7878
let view = self.create_view_on_server(params).await?;
7979
let _ = self.create_view_on_local(view.clone()).await?;
@@ -94,7 +94,10 @@ impl ViewController {
9494
let delta_data = Bytes::from(view_data);
9595
let user_id = self.user.user_id()?;
9696
let repeated_revision: RepeatedRevision = Revision::initial_revision(&user_id, view_id, delta_data).into();
97-
let _ = self.document_manager.save_document(view_id, repeated_revision).await?;
97+
let _ = self
98+
.document_manager
99+
.receive_revisions(view_id, repeated_revision)
100+
.await?;
98101
Ok(())
99102
}
100103

frontend/rust-lib/flowy-folder/tests/workspace/script.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ impl FolderTest {
203203
}
204204
let next_revision = next_revision
205205
.unwrap_or_else(|| panic!("Expected Next revision is {}, but receive None", rev_id.unwrap()));
206-
let mut receiver = rev_manager.revision_ack_receiver();
207-
let _ = receiver.recv().await;
206+
let mut notify = rev_manager.ack_notify();
207+
let _ = notify.recv().await;
208208
assert_eq!(next_revision.rev_id, rev_id.unwrap());
209209
}
210210
}

frontend/rust-lib/flowy-sdk/src/deps_resolve/document_deps.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl WSMessageReceiver for DocumentWSMessageReceiverImpl {
9898
fn receive_message(&self, msg: WebSocketRawMessage) {
9999
let handler = self.0.clone();
100100
tokio::spawn(async move {
101-
handler.did_receive_ws_data(Bytes::from(msg.data)).await;
101+
handler.receive_ws_data(Bytes::from(msg.data)).await;
102102
});
103103
}
104104
}

0 commit comments

Comments
 (0)