From ecd185bdcd0dbd45e4f8a1ab98147d8e85a1ac3a Mon Sep 17 00:00:00 2001 From: Fernando Sobreira Date: Tue, 19 Nov 2024 15:18:37 -0500 Subject: [PATCH] [KLC-1209] Add Get Multi KDA CallValue without KLV (#11) * add get_multi_kda_without_klv_call_value * vec to slice lint --- c-api/libvmexeccapi.h | 1 + c-api/src/capi_vm_hook_pointers.rs | 1 + c-api/src/capi_vm_hooks.rs | 4 ++++ vm-executor-wasmer/src/wasmer_imports.rs | 6 ++++++ vm-executor-wasmer/src/wasmer_instance.rs | 2 +- vm-executor/src/vm_hooks.rs | 5 +++++ 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/c-api/libvmexeccapi.h b/c-api/libvmexeccapi.h index 3634bd2..923409c 100644 --- a/c-api/libvmexeccapi.h +++ b/c-api/libvmexeccapi.h @@ -118,6 +118,7 @@ typedef struct { void (*managed_get_return_data_func_ptr)(void *context, int32_t result_id, int32_t result_handle); void (*managed_get_kda_call_value_func_ptr)(void *context, int32_t kda_call_value_handle, int32_t kda_handle); void (*managed_get_multi_kda_call_value_func_ptr)(void *context, int32_t multi_call_value_handle); + void (*managed_get_multi_kda_without_klv_call_value_func_ptr)(void *context, int32_t multi_call_value_handle); void (*managed_get_back_transfers_func_ptr)(void *context, int32_t kda_transfers_value_handle, int32_t call_value_handle); void (*managed_get_kda_balance_func_ptr)(void *context, int32_t address_handle, int32_t token_id_handle, int64_t nonce, int32_t value_handle); void (*managed_get_user_kda_func_ptr)(void *context, int32_t address_handle, int32_t ticker_handle, int64_t nonce, int32_t balance_handle, int32_t frozen_handle, int32_t last_claim_handle, int32_t buckets_handle, int32_t mime_handle, int32_t metadata_handle); diff --git a/c-api/src/capi_vm_hook_pointers.rs b/c-api/src/capi_vm_hook_pointers.rs index 6ddbcda..2ef540b 100644 --- a/c-api/src/capi_vm_hook_pointers.rs +++ b/c-api/src/capi_vm_hook_pointers.rs @@ -90,6 +90,7 @@ pub struct vm_exec_vm_hook_c_func_pointers { pub managed_get_return_data_func_ptr: extern "C" fn(context: *mut c_void, result_id: i32, result_handle: i32), pub managed_get_kda_call_value_func_ptr: extern "C" fn(context: *mut c_void, kda_call_value_handle: i32, kda_handle: i32), pub managed_get_multi_kda_call_value_func_ptr: extern "C" fn(context: *mut c_void, multi_call_value_handle: i32), + pub managed_get_multi_kda_without_klv_call_value_func_ptr: extern "C" fn(context: *mut c_void, multi_call_value_handle: i32), pub managed_get_back_transfers_func_ptr: extern "C" fn(context: *mut c_void, kda_transfers_value_handle: i32, call_value_handle: i32), pub managed_get_kda_balance_func_ptr: extern "C" fn(context: *mut c_void, address_handle: i32, token_id_handle: i32, nonce: i64, value_handle: i32), pub managed_get_user_kda_func_ptr: extern "C" fn(context: *mut c_void, address_handle: i32, ticker_handle: i32, nonce: i64, balance_handle: i32, frozen_handle: i32, last_claim_handle: i32, buckets_handle: i32, mime_handle: i32, metadata_handle: i32), diff --git a/c-api/src/capi_vm_hooks.rs b/c-api/src/capi_vm_hooks.rs index 5e02858..3680a0e 100644 --- a/c-api/src/capi_vm_hooks.rs +++ b/c-api/src/capi_vm_hooks.rs @@ -359,6 +359,10 @@ impl klever_chain_vm_executor::VMHooks for CapiVMHooks { (self.c_func_pointers_ptr.managed_get_multi_kda_call_value_func_ptr)(self.vm_hooks_ptr, multi_call_value_handle) } + fn managed_get_multi_kda_without_klv_call_value(&self, multi_call_value_handle: i32) { + (self.c_func_pointers_ptr.managed_get_multi_kda_without_klv_call_value_func_ptr)(self.vm_hooks_ptr, multi_call_value_handle) + } + fn managed_get_back_transfers(&self, kda_transfers_value_handle: i32, call_value_handle: i32) { (self.c_func_pointers_ptr.managed_get_back_transfers_func_ptr)(self.vm_hooks_ptr, kda_transfers_value_handle, call_value_handle) } diff --git a/vm-executor-wasmer/src/wasmer_imports.rs b/vm-executor-wasmer/src/wasmer_imports.rs index 333ccde..4069c92 100644 --- a/vm-executor-wasmer/src/wasmer_imports.rs +++ b/vm-executor-wasmer/src/wasmer_imports.rs @@ -410,6 +410,11 @@ fn wasmer_import_managed_get_multi_kda_call_value(env: &VMHooksWrapper, multi_ca env.vm_hooks.managed_get_multi_kda_call_value(multi_call_value_handle) } +#[rustfmt::skip] +fn wasmer_import_managed_get_multi_kda_without_klv_call_value(env: &VMHooksWrapper, multi_call_value_handle: i32) { + env.vm_hooks.managed_get_multi_kda_without_klv_call_value(multi_call_value_handle) +} + #[rustfmt::skip] fn wasmer_import_managed_get_back_transfers(env: &VMHooksWrapper, kda_transfers_value_handle: i32, call_value_handle: i32) { env.vm_hooks.managed_get_back_transfers(kda_transfers_value_handle, call_value_handle) @@ -1298,6 +1303,7 @@ pub fn generate_import_object(store: &Store, env: &VMHooksWrapper) -> ImportObje "managedGetReturnData" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_return_data), "managedGetKDACallValue" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_kda_call_value), "managedGetMultiKDACallValue" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_multi_kda_call_value), + "managedGetMultiKDAWithoutKLVCallValue" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_multi_kda_without_klv_call_value), "managedGetBackTransfers" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_back_transfers), "managedGetKDABalance" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_kda_balance), "managedGetUserKDA" => Function::new_native_with_env(store, env.clone(), wasmer_import_managed_get_user_kda), diff --git a/vm-executor-wasmer/src/wasmer_instance.rs b/vm-executor-wasmer/src/wasmer_instance.rs index 42d9e8e..4b7a7a1 100644 --- a/vm-executor-wasmer/src/wasmer_instance.rs +++ b/vm-executor-wasmer/src/wasmer_instance.rs @@ -146,7 +146,7 @@ fn get_memories(wasmer_instance: &wasmer::Instance) -> Vec<(&String, &wasmer::Me memories } -fn validate_memories(memories: &Vec<(&String, &wasmer::Memory)>) -> Result<(), ExecutorError> { +fn validate_memories(memories: &[(&String, &wasmer::Memory)]) -> Result<(), ExecutorError> { if memories.is_empty() { return Err(Box::new(ServiceError::new( "no memory declared in smart contract", diff --git a/vm-executor/src/vm_hooks.rs b/vm-executor/src/vm_hooks.rs index 582be7c..f8e1f16 100644 --- a/vm-executor/src/vm_hooks.rs +++ b/vm-executor/src/vm_hooks.rs @@ -93,6 +93,7 @@ pub trait VMHooks: core::fmt::Debug + 'static { fn managed_get_return_data(&self, result_id: i32, result_handle: i32); fn managed_get_kda_call_value(&self, kda_call_value_handle: i32, kda_handle: i32); fn managed_get_multi_kda_call_value(&self, multi_call_value_handle: i32); + fn managed_get_multi_kda_without_klv_call_value(&self, multi_call_value_handle: i32); fn managed_get_back_transfers(&self, kda_transfers_value_handle: i32, call_value_handle: i32); fn managed_get_kda_balance(&self, address_handle: i32, token_id_handle: i32, nonce: i64, value_handle: i32); fn managed_get_user_kda(&self, address_handle: i32, ticker_handle: i32, nonce: i64, balance_handle: i32, frozen_handle: i32, last_claim_handle: i32, buckets_handle: i32, mime_handle: i32, metadata_handle: i32); @@ -635,6 +636,10 @@ impl VMHooks for VMHooksDefault { println!("Called: managed_get_multi_kda_call_value"); } + fn managed_get_multi_kda_without_klv_call_value(&self, multi_call_value_handle: i32) { + println!("Called: managed_get_multi_kda_without_klv_call_value"); + } + fn managed_get_back_transfers(&self, kda_transfers_value_handle: i32, call_value_handle: i32) { println!("Called: managed_get_back_transfers"); }