#![allow(clippy::assign_op_pattern)]
use dataplane::api::Request;
use dataplane::ErrorCode;
use dataplane::derive::Decode;
use dataplane::derive::Encode;
use fluvio_types::SpuId;
use crate::InternalScKey;
#[derive(Decode, Encode, Debug, Default)]
pub struct RegisterSpuRequest {
spu: SpuId,
}
impl Request for RegisterSpuRequest {
const API_KEY: u16 = InternalScKey::RegisterSpu as u16;
type Response = RegisterSpuResponse;
}
#[derive(Decode, Encode, Default, Debug)]
pub struct RegisterSpuResponse {
error_code: ErrorCode,
error_message: Option<String>,
}
impl RegisterSpuRequest {
pub fn new(spu: SpuId) -> Self {
Self { spu }
}
pub fn spu(&self) -> SpuId {
self.spu
}
}
impl RegisterSpuResponse {
pub fn ok() -> Self {
RegisterSpuResponse {
error_code: ErrorCode::None,
error_message: None,
}
}
pub fn failed_registeration() -> Self {
RegisterSpuResponse {
error_code: ErrorCode::SpuRegisterationFailed,
error_message: None,
}
}
pub fn is_error(&self) -> bool {
self.error_code.is_error()
}
pub fn error_message(&self) -> String {
if let Some(ref err_msg) = &self.error_message {
err_msg.clone()
} else {
self.error_code.to_sentence()
}
}
}