put jsonrpc stuff in own module

This commit is contained in:
Simon Laux
2022-06-25 23:56:56 +02:00
parent 1700af2c8d
commit 33d548eccc

View File

@@ -4427,21 +4427,20 @@ pub unsafe extern "C" fn dc_accounts_get_next_event(
} }
#[cfg(feature = "jsonrpc")] #[cfg(feature = "jsonrpc")]
use deltachat_jsonrpc::api::CommandApi; mod jsonrpc {
#[cfg(feature = "jsonrpc")] use super::*;
use deltachat_jsonrpc::yerpc::{MessageHandle, RpcHandle}; use deltachat_jsonrpc::api::CommandApi;
use deltachat_jsonrpc::yerpc::{MessageHandle, RpcHandle};
#[cfg(feature = "jsonrpc")] pub struct dc_json_api_instance_t {
pub struct dc_json_api_instance_t {
receiver: async_std::channel::Receiver<deltachat_jsonrpc::yerpc::Message>, receiver: async_std::channel::Receiver<deltachat_jsonrpc::yerpc::Message>,
handle: MessageHandle<CommandApi>, handle: MessageHandle<CommandApi>,
} }
#[cfg(feature = "jsonrpc")] #[no_mangle]
#[no_mangle] pub unsafe extern "C" fn dc_get_json_api(
pub unsafe extern "C" fn dc_get_json_api(
account_manager: *mut dc_accounts_t, account_manager: *mut dc_accounts_t,
) -> *mut dc_json_api_instance_t { ) -> *mut dc_json_api_instance_t {
if account_manager.is_null() { if account_manager.is_null() {
eprintln!("ignoring careless call to dc_get_json_api()"); eprintln!("ignoring careless call to dc_get_json_api()");
return ptr::null_mut(); return ptr::null_mut();
@@ -4456,25 +4455,23 @@ pub unsafe extern "C" fn dc_get_json_api(
let instance = dc_json_api_instance_t { receiver, handle }; let instance = dc_json_api_instance_t { receiver, handle };
Box::into_raw(Box::new(instance)) Box::into_raw(Box::new(instance))
} }
#[cfg(feature = "jsonrpc")] #[no_mangle]
#[no_mangle] pub unsafe extern "C" fn dc_json_api_unref(json_api_instance: *mut dc_json_api_instance_t) {
pub unsafe extern "C" fn dc_json_api_unref(json_api_instance: *mut dc_json_api_instance_t) {
if json_api_instance.is_null() { if json_api_instance.is_null() {
eprintln!("ignoring careless call to dc_json_api_unref()"); eprintln!("ignoring careless call to dc_json_api_unref()");
return; return;
} }
Box::from_raw(json_api_instance); Box::from_raw(json_api_instance);
} }
#[cfg(feature = "jsonrpc")] #[no_mangle]
#[no_mangle] pub unsafe extern "C" fn dc_json_request(
pub unsafe extern "C" fn dc_json_request(
json_api_instance: *mut dc_json_api_instance_t, json_api_instance: *mut dc_json_api_instance_t,
request: *const libc::c_char, request: *const libc::c_char,
) { ) {
if json_api_instance.is_null() || request.is_null() { if json_api_instance.is_null() || request.is_null() {
eprintln!("ignoring careless call to dc_json_request()"); eprintln!("ignoring careless call to dc_json_request()");
return; return;
@@ -4486,13 +4483,12 @@ pub unsafe extern "C" fn dc_json_request(
async_std::task::spawn(async move { async_std::task::spawn(async move {
handle.handle_message(&request).await; handle.handle_message(&request).await;
}); });
} }
#[cfg(feature = "jsonrpc")] #[no_mangle]
#[no_mangle] pub unsafe extern "C" fn dc_get_next_json_response(
pub unsafe extern "C" fn dc_get_next_json_response(
json_api_instance: *mut dc_json_api_instance_t, json_api_instance: *mut dc_json_api_instance_t,
) -> *mut libc::c_char { ) -> *mut libc::c_char {
if json_api_instance.is_null() { if json_api_instance.is_null() {
eprintln!("ignoring careless call to dc_get_next_json_response()"); eprintln!("ignoring careless call to dc_get_next_json_response()");
return ptr::null_mut(); return ptr::null_mut();
@@ -4501,4 +4497,5 @@ pub unsafe extern "C" fn dc_get_next_json_response(
async_std::task::block_on(api.receiver.recv()) async_std::task::block_on(api.receiver.recv())
.map(|result| serde_json::to_string(&result).unwrap_or_default().strdup()) .map(|result| serde_json::to_string(&result).unwrap_or_default().strdup())
.unwrap_or(ptr::null_mut()) .unwrap_or(ptr::null_mut())
}
} }