use crate::agent::AgentId;
use serde::{Deserialize, Serialize};
use std::fmt::Debug;
use std::hash::Hash;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "R: Serialize + for<'de2> Deserialize<'de2>")]
pub struct RequestLockPayload<R: Clone + Debug + Eq + Hash> {
pub resource_id: R,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "R: Serialize + for<'de2> Deserialize<'de2>")]
pub struct ReleaseLockPayload<R: Clone + Debug + Eq + Hash> {
pub resource_id: R,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
ID: Serialize + for<'de2> Deserialize<'de2>,
R: Serialize + for<'de2> Deserialize<'de2>,
")]
pub struct LockAcquiredNoticePayload<R: Clone + Debug + Eq + Hash, ID: AgentId> {
pub resource_id: R,
pub by_agent_id: ID,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "R: Serialize + for<'de2> Deserialize<'de2>")]
pub struct LockDeniedNoticePayload<R: Clone + Debug + Eq + Hash> {
pub resource_id: R,
pub reason: String, }
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(bound = "
ID: Serialize + for<'de2> Deserialize<'de2>,
R: Serialize + for<'de2> Deserialize<'de2>,
")]
pub struct LockReleasedNoticePayload<R: Clone + Debug + Eq + Hash, ID: AgentId> {
pub resource_id: R,
pub by_agent_id: Option<ID>, }