fix build

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-04-19 17:26:36 +08:00
parent f7e2938e6b
commit 5c42b4a1e8
7 changed files with 25 additions and 21 deletions

View File

@ -1398,7 +1398,7 @@ pub fn send_url_scheme(_url: String) {
pub fn plugin_event(id: String, event: Vec<u8>) {
#[cfg(feature = "plugin_framework")]
{
crate::plugin::handle_ui_event(&id, &event);
allow_err!(crate::plugin::handle_ui_event(&id, &event));
}
}

View File

@ -2,7 +2,11 @@ use super::cstr_to_string;
use crate::flutter::{self, APP_TYPE_CM, APP_TYPE_MAIN, SESSIONS};
use hbb_common::{lazy_static, log, message_proto::PluginRequest};
use serde_json;
use std::{collections::HashMap, ffi::c_char, sync::Arc};
use std::{
collections::HashMap,
ffi::{c_char, c_void},
sync::Arc,
};
const MSG_TO_PEER_TARGET: &str = "peer";
const MSG_TO_UI_TARGET: &str = "ui";
@ -42,7 +46,7 @@ pub fn callback_msg(
peer: *const c_char,
target: *const c_char,
id: *const c_char,
content: *const c_char,
content: *const c_void,
len: usize,
) {
macro_rules! callback_msg_field {
@ -66,12 +70,12 @@ pub fn callback_msg(
let content_slice =
unsafe { std::slice::from_raw_parts(content as *const u8, len) };
let content_vec = Vec::from(content_slice);
let plugin = PluginRequest {
let request = PluginRequest {
id,
content: bytes::Bytes::from(content_vec),
..Default::default()
};
session.send_plugin(plugin);
session.send_plugin_request(request);
}
}
MSG_TO_UI_TARGET => {

View File

@ -1,3 +1,5 @@
#![allow(dead_code)]
pub const ERR_SUCCESS: i32 = 0;
// ======================================================

View File

@ -1,14 +1,15 @@
use hbb_common::ResultType;
use std::ffi::{c_char, CStr};
use std::ffi::{c_char, c_void, CStr};
mod callback_msg;
mod config;
pub mod desc;
mod plugins;
mod errno;
mod plugins;
pub use plugins::{
handle_client_event, handle_ui_event, load_plugin, load_plugins, reload_plugin, unload_plugin,
handle_client_event, handle_server_event, handle_ui_event, load_plugin, load_plugins,
reload_plugin, unload_plugin,
};
#[inline]
@ -27,5 +28,5 @@ fn get_code_msg_from_ret(ret: *const c_void) -> (i32, String) {
.to_str()
.unwrap_or("")
.to_string();
Ok((code, msg))
(code, msg)
}

View File

@ -1,6 +1,6 @@
use std::{
collections::HashMap,
ffi::c_char,
ffi::{c_char, c_void},
path::Path,
sync::{Arc, RwLock},
};
@ -176,13 +176,13 @@ pub fn load_plugin(path: &str) -> ResultType<()> {
fn handle_event(method: &[u8], id: &str, event: &[u8]) -> ResultType<()> {
match PLUGINS.read().unwrap().get(id) {
Some(plugin) => {
let ret = (plugin.fn_call)(method.as_ptr() as _, event.as_ptr(), event.len());
let ret = (plugin.fn_call)(method.as_ptr() as _, event.as_ptr() as _, event.len());
if ret.is_null() {
Ok(())
} else {
let (code, msg) = get_code_msg_from_ret(ret);
unsafe {
libc::free(ret);
libc::free(ret as _);
}
bail!(
"Failed to handle plugin event, id: {}, method: {}, code: {}, msg: {}",
@ -213,7 +213,7 @@ pub fn handle_client_event(id: &str, event: &[u8]) -> Option<Message> {
Some(plugin) => {
let ret = (plugin.fn_call)(
METHOD_HANDLE_PEER.as_ptr() as _,
event.as_ptr(),
event.as_ptr() as _,
event.len(),
);
if ret.is_null() {
@ -221,13 +221,10 @@ pub fn handle_client_event(id: &str, event: &[u8]) -> Option<Message> {
} else {
let (code, msg) = get_code_msg_from_ret(ret);
unsafe {
libc::free(ret);
libc::free(ret as _);
}
if code > ERR_RUSTDESK_HANDLE_BASE && code < ERR_PLUGIN_HANDLE_BASE {
let name = match PLUGINS.read().unwrap().get(id) {
Some(plugin) => plugin.desc.as_ref().unwrap().name(),
None => "",
};
let name = plugin.desc.as_ref().unwrap().name();
match code {
ERR_CALL_NOT_SUPPORTED_METHOD => Some(make_plugin_response(
id,

View File

@ -1813,7 +1813,7 @@ impl Connection {
#[cfg(all(feature = "flutter", feature = "plugin_framework"))]
#[cfg(not(any(target_os = "android", target_os = "ios")))]
Some(misc::Union::PluginRequest(p)) => {
if let Some(msg) = create::plugin::handle_client_event(&p.id, &p.content) {
if let Some(msg) = crate::plugin::handle_client_event(&p.id, &p.content) {
self.send(msg).await;
}
}

View File

@ -246,9 +246,9 @@ impl<T: InvokeUiSession> Session<T> {
#[cfg(all(feature = "flutter", feature = "plugin_framework"))]
#[cfg(not(any(target_os = "android", target_os = "ios")))]
pub fn send_plugin(&self, plugin: Plugin) {
pub fn send_plugin_request(&self, request: PluginRequest) {
let mut misc = Misc::new();
misc.set_plugin(plugin);
misc.set_plugin_request(request);
let mut msg_out = Message::new();
msg_out.set_misc(misc);
self.send(Data::Message(msg_out));