1use serde_repr::Serialize_repr;
4
5use crate::{Server, TypeProvider};
6use crate::connection::Callback;
7
8use self::log_message::LogMessage;
9use self::show_message::ShowMessage;
10use self::show_message_request::ShowMessageRequest;
11use self::telemetry::Telemetry;
12
13pub mod show_message;
14pub mod log_message;
15pub mod telemetry;
16pub mod show_message_request;
17
18pub(super) struct WindowService<T: TypeProvider> {
20 #[allow(unused)]
21 show_message: ShowMessage,
22 show_message_request: ShowMessageRequest<T>,
23 #[allow(unused)]
24 log_message: LogMessage,
25 #[allow(unused)]
26 telemetry: Telemetry,
27}
28
29#[repr(i32)]
33#[derive(Serialize_repr, Debug)]
34pub enum MessageType {
35 Error = 1,
36 Warning = 2,
37 Info = 3,
38 Log = 4,
39}
40
41impl<T: TypeProvider> WindowService<T> {
42 pub(super) fn resolve(&self, method: &str) -> Option<Callback<Server<T>>> {
43 match method {
44 ShowMessageRequest::<T>::METHOD => Some(self.show_message_request.callback()),
45 _ => None
46 }
47 }
48}
49
50impl<T: TypeProvider> Default for WindowService<T> {
51 fn default() -> Self {
52 Self {
53 show_message: ShowMessage::default(),
54 show_message_request: ShowMessageRequest::default(),
55 log_message: LogMessage::default(),
56 telemetry: Telemetry::default(),
57 }
58 }
59}