use super::super::{PluginHandleKind, PluginWorkspaceObserveTaskHandle};
use crate::plugin::WorkspacePath;
use std::fmt::{Debug, Display, Formatter};
pub(in crate::plugin) struct PluginWorkspaceObserveTaskResourceAuthority {
handle: PluginWorkspaceObserveTaskHandle,
authority_path: WorkspacePath,
}
pub(in crate::plugin) struct PluginWorkspaceObserveTaskResourceAuthorityParts {
pub handle: PluginWorkspaceObserveTaskHandle,
pub authority_path: WorkspacePath,
}
impl PluginWorkspaceObserveTaskResourceAuthority {
pub(super) const fn new(
handle: PluginWorkspaceObserveTaskHandle,
authority_path: WorkspacePath,
) -> Self {
Self {
handle,
authority_path,
}
}
#[must_use]
#[cfg(test)]
pub(in crate::plugin) const fn handle(&self) -> &PluginWorkspaceObserveTaskHandle {
&self.handle
}
#[must_use]
pub(in crate::plugin) fn into_parts(self) -> PluginWorkspaceObserveTaskResourceAuthorityParts {
PluginWorkspaceObserveTaskResourceAuthorityParts {
handle: self.handle,
authority_path: self.authority_path,
}
}
#[cfg(test)]
pub(in crate::plugin) const fn for_test(
handle: PluginWorkspaceObserveTaskHandle,
authority_path: WorkspacePath,
) -> Self {
Self {
handle,
authority_path,
}
}
}
impl Debug for PluginWorkspaceObserveTaskResourceAuthority {
fn fmt(&self, formatter: &mut Formatter<'_>) -> std::fmt::Result {
formatter
.debug_struct("PluginWorkspaceObserveTaskResourceAuthority")
.field("handle", &self.handle)
.field("authority_path", &self.authority_path)
.finish()
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PluginHostResourceKind {
ViewHandle,
BufferHandle,
WorkspaceObserveTask,
}
impl PluginHostResourceKind {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::ViewHandle => "view",
Self::BufferHandle => "buffer",
Self::WorkspaceObserveTask => "workspace-observe-task",
}
}
}
impl From<PluginHandleKind> for PluginHostResourceKind {
fn from(kind: PluginHandleKind) -> Self {
match kind {
PluginHandleKind::View => Self::ViewHandle,
PluginHandleKind::Buffer => Self::BufferHandle,
}
}
}
impl Display for PluginHostResourceKind {
fn fmt(&self, formatter: &mut Formatter<'_>) -> std::fmt::Result {
formatter.write_str(self.as_str())
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PluginResourceHandleRejectionReason {
Missing,
WrongType,
Unavailable,
}
impl PluginResourceHandleRejectionReason {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Missing => "missing",
Self::WrongType => "wrong-type",
Self::Unavailable => "unavailable",
}
}
}
impl Display for PluginResourceHandleRejectionReason {
fn fmt(&self, formatter: &mut Formatter<'_>) -> std::fmt::Result {
formatter.write_str(self.as_str())
}
}