Rename subscribe to add_{message,request}_handler in Client

This makes it easier to distinguish between messages and requests.
This commit is contained in:
Antonio Scandurra 2022-02-14 09:25:31 +01:00
parent 6a6cd68df4
commit 1aff42302c
4 changed files with 52 additions and 39 deletions

View file

@ -184,7 +184,8 @@ impl Channel {
rpc: Arc<Client>, rpc: Arc<Client>,
cx: &mut ModelContext<Self>, cx: &mut ModelContext<Self>,
) -> Self { ) -> Self {
let _subscription = rpc.subscribe_to_entity(details.id, cx, Self::handle_message_sent); let _subscription =
rpc.add_entity_message_handler(details.id, cx, Self::handle_message_sent);
{ {
let user_store = user_store.clone(); let user_store = user_store.clone();

View file

@ -266,7 +266,7 @@ impl Client {
} }
} }
pub fn subscribe<T, M, F, Fut>( pub fn add_message_handler<T, M, F, Fut>(
self: &Arc<Self>, self: &Arc<Self>,
cx: &mut ModelContext<M>, cx: &mut ModelContext<M>,
mut handler: F, mut handler: F,
@ -311,7 +311,7 @@ impl Client {
} }
} }
pub fn subscribe_to_entity<T, M, F, Fut>( pub fn add_entity_message_handler<T, M, F, Fut>(
self: &Arc<Self>, self: &Arc<Self>,
remote_id: u64, remote_id: u64,
cx: &mut ModelContext<M>, cx: &mut ModelContext<M>,
@ -369,7 +369,7 @@ impl Client {
} }
} }
pub fn subscribe_to_entity_request<T, M, F, Fut>( pub fn add_entity_request_handler<T, M, F, Fut>(
self: &Arc<Self>, self: &Arc<Self>,
remote_id: u64, remote_id: u64,
cx: &mut ModelContext<M>, cx: &mut ModelContext<M>,
@ -384,7 +384,7 @@ impl Client {
+ FnMut(ModelHandle<M>, TypedEnvelope<T>, Arc<Self>, AsyncAppContext) -> Fut, + FnMut(ModelHandle<M>, TypedEnvelope<T>, Arc<Self>, AsyncAppContext) -> Fut,
Fut: 'static + Future<Output = Result<T::Response>>, Fut: 'static + Future<Output = Result<T::Response>>,
{ {
self.subscribe_to_entity(remote_id, cx, move |model, envelope, client, cx| { self.add_entity_message_handler(remote_id, cx, move |model, envelope, client, cx| {
let receipt = envelope.receipt(); let receipt = envelope.receipt();
let response = handler(model, envelope, client.clone(), cx); let response = handler(model, envelope, client.clone(), cx);
async move { async move {
@ -927,7 +927,7 @@ mod tests {
let (mut done_tx1, mut done_rx1) = postage::oneshot::channel(); let (mut done_tx1, mut done_rx1) = postage::oneshot::channel();
let (mut done_tx2, mut done_rx2) = postage::oneshot::channel(); let (mut done_tx2, mut done_rx2) = postage::oneshot::channel();
let _subscription1 = model.update(&mut cx, |_, cx| { let _subscription1 = model.update(&mut cx, |_, cx| {
client.subscribe_to_entity( client.add_entity_message_handler(
1, 1,
cx, cx,
move |_, _: TypedEnvelope<proto::UnshareProject>, _, _| { move |_, _: TypedEnvelope<proto::UnshareProject>, _, _| {
@ -937,7 +937,7 @@ mod tests {
) )
}); });
let _subscription2 = model.update(&mut cx, |_, cx| { let _subscription2 = model.update(&mut cx, |_, cx| {
client.subscribe_to_entity( client.add_entity_message_handler(
2, 2,
cx, cx,
move |_, _: TypedEnvelope<proto::UnshareProject>, _, _| { move |_, _: TypedEnvelope<proto::UnshareProject>, _, _| {
@ -950,7 +950,7 @@ mod tests {
// Ensure dropping a subscription for the same entity type still allows receiving of // Ensure dropping a subscription for the same entity type still allows receiving of
// messages for other entity IDs of the same type. // messages for other entity IDs of the same type.
let subscription3 = model.update(&mut cx, |_, cx| { let subscription3 = model.update(&mut cx, |_, cx| {
client.subscribe_to_entity( client.add_entity_message_handler(
3, 3,
cx, cx,
|_, _: TypedEnvelope<proto::UnshareProject>, _, _| async { Ok(()) }, |_, _: TypedEnvelope<proto::UnshareProject>, _, _| async { Ok(()) },
@ -976,14 +976,14 @@ mod tests {
let (mut done_tx1, _done_rx1) = postage::oneshot::channel(); let (mut done_tx1, _done_rx1) = postage::oneshot::channel();
let (mut done_tx2, mut done_rx2) = postage::oneshot::channel(); let (mut done_tx2, mut done_rx2) = postage::oneshot::channel();
let subscription1 = model.update(&mut cx, |_, cx| { let subscription1 = model.update(&mut cx, |_, cx| {
client.subscribe(cx, move |_, _: TypedEnvelope<proto::Ping>, _, _| { client.add_message_handler(cx, move |_, _: TypedEnvelope<proto::Ping>, _, _| {
postage::sink::Sink::try_send(&mut done_tx1, ()).unwrap(); postage::sink::Sink::try_send(&mut done_tx1, ()).unwrap();
async { Ok(()) } async { Ok(()) }
}) })
}); });
drop(subscription1); drop(subscription1);
let _subscription2 = model.update(&mut cx, |_, cx| { let _subscription2 = model.update(&mut cx, |_, cx| {
client.subscribe(cx, move |_, _: TypedEnvelope<proto::Ping>, _, _| { client.add_message_handler(cx, move |_, _: TypedEnvelope<proto::Ping>, _, _| {
postage::sink::Sink::try_send(&mut done_tx2, ()).unwrap(); postage::sink::Sink::try_send(&mut done_tx2, ()).unwrap();
async { Ok(()) } async { Ok(()) }
}) })
@ -1003,7 +1003,7 @@ mod tests {
let model = cx.add_model(|_| Model { subscription: None }); let model = cx.add_model(|_| Model { subscription: None });
let (mut done_tx, mut done_rx) = postage::oneshot::channel(); let (mut done_tx, mut done_rx) = postage::oneshot::channel();
model.update(&mut cx, |model, cx| { model.update(&mut cx, |model, cx| {
model.subscription = Some(client.subscribe( model.subscription = Some(client.add_message_handler(
cx, cx,
move |model, _: TypedEnvelope<proto::Ping>, _, mut cx| { move |model, _: TypedEnvelope<proto::Ping>, _, mut cx| {
model.update(&mut cx, |model, _| model.subscription.take()); model.update(&mut cx, |model, _| model.subscription.take());

View file

@ -58,7 +58,7 @@ impl UserStore {
let (mut current_user_tx, current_user_rx) = watch::channel(); let (mut current_user_tx, current_user_rx) = watch::channel();
let (mut update_contacts_tx, mut update_contacts_rx) = let (mut update_contacts_tx, mut update_contacts_rx) =
watch::channel::<Option<proto::UpdateContacts>>(); watch::channel::<Option<proto::UpdateContacts>>();
let update_contacts_subscription = client.subscribe( let update_contacts_subscription = client.add_message_handler(
cx, cx,
move |_: ModelHandle<Self>, msg: TypedEnvelope<proto::UpdateContacts>, _, _| { move |_: ModelHandle<Self>, msg: TypedEnvelope<proto::UpdateContacts>, _, _| {
*update_contacts_tx.borrow_mut() = Some(msg.payload); *update_contacts_tx.borrow_mut() = Some(msg.payload);

View file

@ -280,31 +280,43 @@ impl Project {
user_store, user_store,
fs, fs,
subscriptions: vec![ subscriptions: vec![
client.subscribe_to_entity(remote_id, cx, Self::handle_unshare_project), client.add_entity_message_handler(remote_id, cx, Self::handle_unshare_project),
client.subscribe_to_entity(remote_id, cx, Self::handle_add_collaborator), client.add_entity_message_handler(remote_id, cx, Self::handle_add_collaborator),
client.subscribe_to_entity(remote_id, cx, Self::handle_remove_collaborator), client.add_entity_message_handler(
client.subscribe_to_entity(remote_id, cx, Self::handle_share_worktree), remote_id,
client.subscribe_to_entity(remote_id, cx, Self::handle_unregister_worktree), cx,
client.subscribe_to_entity(remote_id, cx, Self::handle_update_worktree), Self::handle_remove_collaborator,
client.subscribe_to_entity( ),
client.add_entity_message_handler(remote_id, cx, Self::handle_share_worktree),
client.add_entity_message_handler(
remote_id,
cx,
Self::handle_unregister_worktree,
),
client.add_entity_message_handler(remote_id, cx, Self::handle_update_worktree),
client.add_entity_message_handler(
remote_id, remote_id,
cx, cx,
Self::handle_update_diagnostic_summary, Self::handle_update_diagnostic_summary,
), ),
client.subscribe_to_entity( client.add_entity_message_handler(
remote_id, remote_id,
cx, cx,
Self::handle_disk_based_diagnostics_updating, Self::handle_disk_based_diagnostics_updating,
), ),
client.subscribe_to_entity( client.add_entity_message_handler(
remote_id, remote_id,
cx, cx,
Self::handle_disk_based_diagnostics_updated, Self::handle_disk_based_diagnostics_updated,
), ),
client.subscribe_to_entity(remote_id, cx, Self::handle_update_buffer), client.add_entity_message_handler(remote_id, cx, Self::handle_update_buffer),
client.subscribe_to_entity(remote_id, cx, Self::handle_update_buffer_file), client.add_entity_message_handler(
client.subscribe_to_entity(remote_id, cx, Self::handle_buffer_reloaded), remote_id,
client.subscribe_to_entity(remote_id, cx, Self::handle_buffer_saved), cx,
Self::handle_update_buffer_file,
),
client.add_entity_message_handler(remote_id, cx, Self::handle_buffer_reloaded),
client.add_entity_message_handler(remote_id, cx, Self::handle_buffer_saved),
], ],
client, client,
client_state: ProjectClientState::Remote { client_state: ProjectClientState::Remote {
@ -340,24 +352,24 @@ impl Project {
if let Some(remote_id) = remote_id { if let Some(remote_id) = remote_id {
let client = &self.client; let client = &self.client;
self.subscriptions.extend([ self.subscriptions.extend([
client.subscribe_to_entity_request(remote_id, cx, Self::handle_open_buffer), client.add_entity_request_handler(remote_id, cx, Self::handle_open_buffer),
client.subscribe_to_entity(remote_id, cx, Self::handle_close_buffer), client.add_entity_message_handler(remote_id, cx, Self::handle_close_buffer),
client.subscribe_to_entity(remote_id, cx, Self::handle_add_collaborator), client.add_entity_message_handler(remote_id, cx, Self::handle_add_collaborator),
client.subscribe_to_entity(remote_id, cx, Self::handle_remove_collaborator), client.add_entity_message_handler(remote_id, cx, Self::handle_remove_collaborator),
client.subscribe_to_entity(remote_id, cx, Self::handle_update_worktree), client.add_entity_message_handler(remote_id, cx, Self::handle_update_worktree),
client.subscribe_to_entity(remote_id, cx, Self::handle_update_buffer), client.add_entity_message_handler(remote_id, cx, Self::handle_update_buffer),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_save_buffer), client.add_entity_request_handler(remote_id, cx, Self::handle_save_buffer),
client.subscribe_to_entity(remote_id, cx, Self::handle_buffer_saved), client.add_entity_message_handler(remote_id, cx, Self::handle_buffer_saved),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_format_buffers), client.add_entity_request_handler(remote_id, cx, Self::handle_format_buffers),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_get_completions), client.add_entity_request_handler(remote_id, cx, Self::handle_get_completions),
client.subscribe_to_entity_request( client.add_entity_request_handler(
remote_id, remote_id,
cx, cx,
Self::handle_apply_additional_edits_for_completion, Self::handle_apply_additional_edits_for_completion,
), ),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_get_code_actions), client.add_entity_request_handler(remote_id, cx, Self::handle_get_code_actions),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_apply_code_action), client.add_entity_request_handler(remote_id, cx, Self::handle_apply_code_action),
client.subscribe_to_entity_request(remote_id, cx, Self::handle_get_definition), client.add_entity_request_handler(remote_id, cx, Self::handle_get_definition),
]); ]);
} }
} }