mirror of
https://github.com/fluencelabs/marine-rs-sdk
synced 2025-03-15 06:20:50 +00:00
Merge pull request #18 from fluencelabs/mounted_binary_result
This commit is contained in:
commit
eb882bc2a9
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "fluence"
|
||||
version = "0.2.18" # remember to update html_root_url
|
||||
version = "0.3.0" # remember to update html_root_url
|
||||
description = "Fluence backend SDK for developing backend applications for the Fluence network"
|
||||
documentation = "https://docs.rs/fluence/"
|
||||
repository = "https://github.com/fluencelabs/rust-sdk"
|
||||
@ -18,8 +18,8 @@ all-features = true
|
||||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
fluence-sdk-macro = { path = "crates/macro", version = "=0.2.18" }
|
||||
fluence-sdk-main = { path = "crates/main", version = "=0.2.18" }
|
||||
fluence-sdk-macro = { path = "crates/macro", version = "=0.3.0" }
|
||||
fluence-sdk-main = { path = "crates/main", version = "=0.3.0" }
|
||||
|
||||
[features]
|
||||
# Print some internal logs by log_utf8_string
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "fluence-sdk-macro"
|
||||
version = "0.2.18" # remember to update html_root_url
|
||||
version = "0.3.0" # remember to update html_root_url
|
||||
edition = "2018"
|
||||
description = "Definition of `#[invoke_handler]` attribute"
|
||||
documentation = "https://docs.rs/fluence/fluence-sdk-macro"
|
||||
@ -17,4 +17,4 @@ all-features = true
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
fluence-sdk-wit = { path = "../wit", version = "=0.2.18" }
|
||||
fluence-sdk-wit = { path = "../wit", version = "=0.3.0" }
|
||||
|
@ -54,7 +54,7 @@
|
||||
//!
|
||||
//! ```
|
||||
|
||||
#![doc(html_root_url = "https://docs.rs/fluence-sdk-macro/0.2.18")]
|
||||
#![doc(html_root_url = "https://docs.rs/fluence-sdk-macro/0.3.0")]
|
||||
#![deny(
|
||||
dead_code,
|
||||
nonstandard_style,
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "fluence-sdk-main"
|
||||
version = "0.2.18" # remember to update html_root_url
|
||||
version = "0.3.0" # remember to update html_root_url
|
||||
edition = "2018"
|
||||
description = "Rust SDK for applications for the Fluence network"
|
||||
documentation = "https://docs.rs/fluence/fluence-sdk-macro"
|
||||
@ -18,7 +18,7 @@ path = "src/lib.rs"
|
||||
crate-type = ["rlib"]
|
||||
|
||||
[dependencies]
|
||||
fluence-sdk-macro = { path = "../macro", version = "=0.2.18" }
|
||||
fluence-sdk-macro = { path = "../macro", version = "=0.3.0" }
|
||||
|
||||
log = { version = "0.4.8", features = ["std"] }
|
||||
serde = "=1.0.118"
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#![allow(clippy::missing_safety_doc)]
|
||||
#![allow(clippy::needless_doctest_main)]
|
||||
#![doc(html_root_url = "https://docs.rs/fluence-sdk-main/0.2.18")]
|
||||
#![doc(html_root_url = "https://docs.rs/fluence-sdk-main/0.3.0")]
|
||||
#![deny(
|
||||
dead_code,
|
||||
nonstandard_style,
|
||||
@ -35,6 +35,7 @@ mod call_parameters;
|
||||
mod export_allocator;
|
||||
#[cfg(any(feature = "debug", feature = "logger"))]
|
||||
mod logger;
|
||||
pub mod mounted_binary;
|
||||
mod result;
|
||||
|
||||
pub use call_parameters::CallParameters;
|
||||
|
84
crates/main/src/mounted_binary.rs
Normal file
84
crates/main/src/mounted_binary.rs
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright 2020 Fluence Labs Limited
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
use fluence_sdk_macro::fce;
|
||||
|
||||
use serde::Serialize;
|
||||
use serde::Deserialize;
|
||||
|
||||
pub const SUCCESS_CODE: i32 = 0;
|
||||
|
||||
/// Describes result of calling a CLI service.
|
||||
#[fce]
|
||||
#[derive(Clone, PartialEq, Default, Eq, Debug, Serialize, Deserialize)]
|
||||
pub struct Result {
|
||||
/// Return process exit code or host execution error code, where SUCCESS_CODE means success.
|
||||
pub ret_code: i32,
|
||||
|
||||
/// Contains the string representation of an error, if ret_code != SUCCESS_CODE.
|
||||
pub error: String,
|
||||
|
||||
/// The data that the process wrote to stdout.
|
||||
pub stdout: Vec<u8>,
|
||||
|
||||
/// The data that the process wrote to stderr.
|
||||
pub stderr: Vec<u8>,
|
||||
}
|
||||
|
||||
impl Result {
|
||||
/// Create a new failure MountedBinaryResult from the provided ret_code.
|
||||
pub fn from_error(ret_code: i32, error: impl Into<String>) -> Self {
|
||||
Self {
|
||||
ret_code,
|
||||
error: error.into(),
|
||||
stdout: Vec::new(),
|
||||
stderr: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Return true, if this Result represents a success result, otherwise false.
|
||||
pub fn is_success(&self) -> bool {
|
||||
return self.ret_code == SUCCESS_CODE;
|
||||
}
|
||||
|
||||
/// This function tries to transform a result to the string representation.
|
||||
/// Internally, It checks ret_code and returns either Some(Ok(stdout)) if it was SUCCESS_CODE
|
||||
/// or Some(Err(error)) otherwise. None is returned if stdout or stderr contains non valid
|
||||
/// UTF8 string.
|
||||
pub fn into_std(self) -> Option<std::result::Result<String, String>> {
|
||||
if self.ret_code == SUCCESS_CODE {
|
||||
let stdout = String::from_utf8(self.stdout).ok()?;
|
||||
Some(Ok(stdout))
|
||||
} else {
|
||||
let stderr = std::str::from_utf8(&self.stdout).ok()?;
|
||||
Some(Ok(format!("error: {}, stderr: {}", self.error, stderr)))
|
||||
}
|
||||
}
|
||||
|
||||
/// This function tries to represent a result to the string representation.
|
||||
/// Internally, It checks ret_code and returns either Some(Ok(stdout)) if it was SUCCESS_CODE
|
||||
/// or Some(Err(error)) otherwise. None is returned if stdout or stderr contains non valid
|
||||
/// UTF8 string.
|
||||
pub fn as_std(&self) -> Option<std::result::Result<String, String>> {
|
||||
if self.ret_code == SUCCESS_CODE {
|
||||
let stdout = String::from_utf8(self.stdout.clone()).ok()?;
|
||||
Some(Ok(stdout))
|
||||
} else {
|
||||
let stderr = std::str::from_utf8(&self.stdout).ok()?;
|
||||
Some(Ok(format!("error: {}, stderr: {}", self.error, stderr)))
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "fluence-sdk-wit"
|
||||
version = "0.2.18" # remember to update html_root_url
|
||||
version = "0.3.0" # remember to update html_root_url
|
||||
edition = "2018"
|
||||
description = "Webassembly interface-types generator"
|
||||
documentation = "https://docs.rs/fluence/fluence-sdk-macro"
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#![doc(html_root_url = "https://docs.rs/wit-support/0.2.18")]
|
||||
#![doc(html_root_url = "https://docs.rs/wit-support/0.3.0")]
|
||||
#![deny(
|
||||
dead_code,
|
||||
nonstandard_style,
|
||||
|
@ -55,7 +55,7 @@
|
||||
//! pub fn curl_get(url: String) -> String;
|
||||
//! }
|
||||
//! ```
|
||||
#![doc(html_root_url = "https://docs.rs/fluence/0.2.18")]
|
||||
#![doc(html_root_url = "https://docs.rs/fluence/0.3.0")]
|
||||
#![deny(
|
||||
dead_code,
|
||||
nonstandard_style,
|
||||
@ -79,6 +79,9 @@ pub use fluence_sdk_main::WasmLoggerBuilder;
|
||||
#[cfg(feature = "logger")]
|
||||
pub use fluence_sdk_main::TargetMap;
|
||||
|
||||
pub use fluence_sdk_main::mounted_binary::Result as MountedBinaryResult;
|
||||
pub use fluence_sdk_main::mounted_binary::SUCCESS_CODE as BINARY_SUCCESS_CODE;
|
||||
|
||||
/// These API functions are intended for internal usage in generated code.
|
||||
/// Normally, you shouldn't use them.
|
||||
pub mod internal {
|
||||
|
Loading…
x
Reference in New Issue
Block a user